# Given a unit vector in spherical coordinates, how do I find two orthonormal vectors?

Given a unit vector in spherical coordinates, \begin{align*} \mathbf{n}(\theta, \phi) = \begin{bmatrix} \cos\theta\sin\phi\\ \sin\theta\sin\phi\\ \cos\phi \end{bmatrix}, \end{align*} does anyone know of an elegant way for me to utilise the angles $$\theta$$ and $$\phi$$ to compute two orthonormal vectors to $$\mathbf{n}$$? Preferably without having to used cross-products.

• Why wouldn't you want to use cross products? It seems like the most natural way to proceed here. (After finding one orthogonal vector to $\mathbf n$, find the other one by taking their cross product.) Dec 23 '19 at 23:15
• Because the orthonormal vector features in the construction of an objective function that is to be minimised. The function is highly non-linear already, considering the trigonometric terms. But when the orthonormal vectors are computed using cross products, they also need to be normalised, so this introduces square root terms in the denominator that are also functions of $\theta$ and $\phi$. So I'm just wondering if there's a way of computing the orthonormal vectors so as to not introduce the normalisation term into the objective function. Dec 23 '19 at 23:24
• I think you don't need to worry about that; if you can identify an orthonormal vector $\mathbf v$ to $\mathbf n$ by "eye power" then taking the cross product $\mathbf v\times\mathbf n$, the result is already normalised. (See my answer for details.) Dec 23 '19 at 23:27
• It looks to me like you’re actually working in Cartesian coordinates here. The vector $\mathbf n$ might be parameterized by azimuth and colatitude on the unit sphere, but the coordinate vector that you’ve presented is in the standard Cartesian basis.
– amd
Dec 23 '19 at 23:50

It is clear that the unit vector $$\mathbf v=[-\sin\theta,\cos\theta,0]^T$$ will be orthogonal to $$\mathbf n$$ since you can verify that $$\mathbf v\cdot\mathbf n=0$$. To find a unit vector orthogonal to these two just compute the cross product, namely $$\mathbf v\times\mathbf n=\begin{vmatrix}\hat\imath&\hat\jmath&\hat k\\-\sin\theta&\cos\theta&0\\\cos\theta\sin\phi&\sin\theta\sin\phi&\cos\phi\end{vmatrix}=\begin{bmatrix}\cos\theta\cos\phi\\\sin\theta\cos\phi\\-\sin\phi\end{bmatrix}.$$ You can easily check that this is also a unit vector, and that $$(\mathbf v\times\mathbf n)\cdot\mathbf v=(\mathbf v\times\mathbf n)\cdot\mathbf n=0$$.

• Oh wow, thanks so much for this! This is exactly what I'm looking for! Dec 23 '19 at 23:30
• Glad to help!${}$ Dec 23 '19 at 23:55

You can use an orthonormal vector on the equator,

$$\pmatrix{\sin\theta\\-\cos\theta\\0}\;,$$

and

$$\pmatrix{\cos\theta\cos\phi\\\sin\theta\cos\phi\\-\sin\phi}\;.$$

• Thanks for this! Dec 23 '19 at 23:30