I have one cycle of the following signal stored in a memory:
x(n)=sin(2 * pi * n/N + theta) where theta= 2*pi*q/N and q, N are integers.
How do I use these values to obtain sinusoides (samples) with same frequency but different phase?
If the values are stored in a linear array indexed by $n$, read the values out sequentially from a different starting point in the array, that is beginning with a nonzero value of $n$, and have the read out "wrap" around the end of the array, that is, the incrementing of the index is done modulo $N$. This gives sinusoids with possible initial phases $0, 2\pi/N, (2)2\pi/N, (3)2\pi/N, \ldots, (N-1)2\pi/N$ depending on the choice of starting point of the read out. If you want other values for the initial phase, you will need to do some computations, and not just a plain reading out from memory.