I want to generate a list of vectors $\{\mathbf{v}_i\}, i\in[1,N]$ such that
$$\mathbf{v}_i\cdot\mathbf{v}_i = 1, \forall i$$
$$\mathbf{v}_i\cdot\mathbf{v}_j = \cos\theta, \forall i\neq j$$
$$\sum_{i=1}^N \mathbf{v}_i = 0$$
$$\mathbf{v}_1=(1,0,0)$$
$$\mathbf{v}_2=(\cos\theta,0,\sin\theta)$$
For $N=2$, we have $\mathbf{v}_1=(1,0,0), \mathbf{v}_2=(-1,0,0), \theta=\pi$.
For $N=3$, we have $\mathbf{v}_1=(1,0,0), \mathbf{v}_2=(-1/2,0,\sqrt{3}/2), \mathbf{v}_2=(-1/2,0,-\sqrt{3}/2),\theta=2\pi/3$.
etc.
I would like to be able to generate this list of vectors for arbitrary $N$. I can do it by hand, but I want to add this to some python code. I tried to come up with an iterative way of doing it, but I lose track of all the vector components I have to solve for pretty quickly. What is the simplest way to do this?
$N$ is not going to be huge -- let's say $N=30$ at most. Because of this, and because this generation will be done once in my code, I'm not super worried about the performance of the python code that I will implement.