I am well aware this question has been asked before, I am asking it again as the answer I have previously seen is a bit confusing and doesn't offer any direct formulas to do the conversion, which is what I am after.

I am attempting to convert back and forth between cartesian velocity $(v_x, v_y, v_z)$ and spherical velocity $(v_r, v_\theta, v_\phi)$. Currently, what I have is as follows.

To obtain the spherical velocities from cartesian, I implicitly differentiated $r, \theta, \phi$ with respect to $t$ to have:

$$ v_r = \frac{dr}{dt} = \frac{d}{dt} \sqrt{x^2 + y^2 + z^2} = \frac{xx' + y y' + zz'}{r} $$

$$ v_\theta = \frac{d\theta}{dt} = \frac{d}{dt} \operatorname{arccos} \left(\frac{z}{r}\right) = \frac{z r' - rz'}{r^2 \sqrt{1 - \left(\frac{z}{r}\right)^2}} $$

$$ v_\phi = \frac{d\phi}{dt} = \frac{d}{dt} \operatorname{arctan} \left(\frac{y}{x}\right) = \frac{xy' - y x'}{x^2 + y^2} $$

Whereas to obtain the cartesian velocities from spherical, I implicitly differentiated $x, y, z$ with respect to $t$ to have:

$$ v_x = \frac{dx}{dt} = \frac{d}{dt} r \sin \theta \cos \phi = r \cos \phi \cos \theta \theta' + \sin \theta \cos \phi r' - r \sin \phi \sin \theta \phi' $$

$$ v_y = \frac{dy}{dt} = \frac{d}{dt} r \sin \theta \sin \phi = r \sin \phi \cos \theta \theta' + r \sin \theta \cos \phi \phi' + \sin \phi \sin \theta r' $$

$$ v_z = \frac{dz}{dt} = \frac{d}{dt} r \cos \theta = \cos \theta r' - r \sin \theta \theta' $$

  • $\begingroup$ The problem is the basis in spherical coordinates is non-linear (i.e., $\mathrm{e}_\phi\neq\partial/\partial\phi$ but is instead $\mathrm{r}_\phi=r^{-1}\partial/\partial\phi$), which is what Mateo warns you at the end of their post in the linked answer. $\endgroup$
    – Kyle Kanos
    May 13, 2023 at 19:53

3 Answers 3


This is one of those things that will, upon closer inspection, turn out to be horrible and confusing. Let us compute some stuff, with suggestive notation chosen to make the understanding easier.

Studying a little bit of GR (really, just tensors), it is clear that a most sensible way to capture what it physically means to be a vector, namely that the concept of direction and units are fully incorporated into the scheme, is to have vectors be derivatives of things. Thus, the natural basis vectors are partial derivatives, and what better than the partial derivatives of the coördinate labels to be the basis? This means that the best way to be sure of things is to start with vectors in Cartesian coördinates in the following way: $$\vec v=v^i\partial_i=v^x\partial_x+v^y\partial_y+v^z\partial_z= \begin{pmatrix}v^x&v^y&v^z \end {pmatrix} \begin{pmatrix}\partial_x\\\partial_y\\\partial_z \end {pmatrix}= \begin{pmatrix}\dot x&\dot y&\dot z \end {pmatrix} \begin{pmatrix}\partial_x\\\partial_y\\\partial_z \end {pmatrix}$$ Now, some work on the time derivative of $\vec r=(x\quad y\quad z)= (r\sin\vartheta\cos\varphi\quad r\sin\vartheta\sin\varphi\quad r\cos\vartheta)$ yields $$\vec v= \begin{pmatrix}\dot r&\dot\vartheta&\dot\varphi \end {pmatrix} \begin{pmatrix} \sin\vartheta\cos\varphi& \sin\vartheta\sin\varphi& \cos\vartheta\\ r\cos\vartheta\cos\varphi&r\cos\vartheta\sin\varphi&-r\sin\vartheta\\ -r\sin\vartheta\sin\varphi&r\sin\vartheta\cos\varphi&0\\ \end {pmatrix} \begin{pmatrix}\partial_x\\\partial_y\\\partial_z \end {pmatrix}$$ which means that $$ \begin{pmatrix} \sin\vartheta\cos\varphi& \sin\vartheta\sin\varphi& \cos\vartheta\\ r\cos\vartheta\cos\varphi&r\cos\vartheta\sin\varphi&-r\sin\vartheta\\ -r\sin\vartheta\sin\varphi&r\sin\vartheta\cos\varphi&0\\ \end {pmatrix} \begin{pmatrix}\partial_x\\\partial_y\\\partial_z \end {pmatrix}= \begin{pmatrix}\partial_r\\\partial_\vartheta\\\partial_\varphi \end {pmatrix}$$ But most of the stuff in physics notation is not in coördinate basis as we just derived. Instead, physics most often work in vierbeins = tetrad formalism, and it just means that we like our basis vectors to have length 1. We thus have to manually remember to add unnatural trickery like $$\vec v= \begin{pmatrix}\dot r&r\,\dot\vartheta&r\sin\vartheta\,\dot\varphi \end {pmatrix} \begin{pmatrix}\partial_r\\r^{-1}\partial_\vartheta\\(r\sin\vartheta)^{-1}\partial_\varphi \end {pmatrix}= \begin{pmatrix}\dot r&r\,\dot\vartheta&r\sin\vartheta\,\dot\varphi \end {pmatrix} \begin{pmatrix} \sin\vartheta\cos\varphi&\sin\vartheta\sin\varphi& \cos\vartheta\\ \cos\vartheta\cos\varphi&\cos\vartheta\sin\varphi&-\sin\vartheta\\ -\sin\varphi&\cos\varphi&0\\ \end {pmatrix} \begin{pmatrix}\partial_x\\\partial_y\\\partial_z \end {pmatrix}$$ where we have, suddenly, just a rotation matrix.

After all that computation, we can now talk a bit about the annoyances and complications. For one, do we take $(\dot r\quad\dot\vartheta\quad\dot\varphi)$ as the vector components (yes, more commonly), or do we write down $(\dot r\quad r\,\dot\vartheta\quad r\sin\vartheta\,\dot\varphi)$ (this is very rare, and physically kind of wrong, despite having just derived it). By how we do the common thing, this really means that most physics notation is just sloppy and internally inconsistent.

But let us now consider the scenario equivalent of infinite plane waves, abusing the notation of their ``velocities" to make them vectors. Then for constant $(\dot x\quad\dot y\quad\dot z)$ across space, it is easy to see that $(\dot r\quad\dot\vartheta\quad\dot\varphi)$ are functions of location! You can see how life is horrible and part of why nobody wanted to treat this topic fully.

Note that this infinite plane wave case is so important and common, that it is tolerable to just say that $(v^r,v^\vartheta,v^\varphi)=(|\vec v|,\vartheta_0,\varphi_0)$, where we simply state the speed and the constant angles that the direction of travel makes with the Cartesian axes. This is yet another inconsistent hybrid notation, but it is vastly less annoying than stating the full location function form that we would have had to write down.

Now we go higher in mathematical sophistication. You might have noticed that I have taken quite a lot of pains to ensure that I have written all the $(\dot x,\dot y,\dot z)$ and $(\dot r,\dot\vartheta,\dot\varphi)$ separately from the position dependence. This is not merely organisation, but rather is necessary to emphasise that velocities are completely independent of the local position. You can have any velocity you like at any one point; it is the specification of the trajectory, the kinematics, that gives you a relationship between the velocities and the neighbouring positions and times.

I am belabouring this trivial sounding point because velocities live in the tangent bundle. Due to the partial derivatives of coördinates that form the coördinate basis vectors, velocities are proper vectors, living in the tangent space of wherever the vector happens to reside. Derivatives, i.e. the tangent spaces, are linear spaces, and thus you can do your standard scaling, addition and subtraction, on them. When mathematicians define vector spaces, what they really only managed to do, is define these linear spaces (matrices are an example). Only in tensors and beyond, do mathematicians actually manage to capture the behaviour of physical vectors enough.

This is to be contrasted with positions, that are represented by coördinates. In particular, in GR, if your spacetime is curved, then positions are no longer vectors. Instead, you get to arbitrarily lay down coördinates, provided that they function adequately as coördinates, and cannot do any translation, addition, subtraction, scaling, etc. Notice, in particular, that parallel transport is broken, even for velocities, such that you can only translate vectors within the linear spaces that they live in, and not translate one vector from the position that they live in, to another position's tangent space. You need some definition of parallel transport for that. An interesting special case is Lie groups, where there is so much symmetry that parallel transport is trivial.

Since positions are not vectors, and velocities are the first object to be a proper kind of vectors, it makes even more sense to take velocities as they are at face value, and ignore complications. Hence, more reason to opt for magnitude and constant angles form, rather than complicated functions of location form. Life is much easier if one learns not to be so pedantic.

It is quite nice to learn more about manifolds, tangent bundles, cotangent bundles, and so forth. The concepts are actually quite nice and geometrical and beautiful. You will be confused, but you can work through them and be really happy.

  • $\begingroup$ Thank you, I had no idea that differential geometry would be involved in something as seemingly simple as a conversion of a velocity vector between coordinate systems! $\endgroup$
    – JS4137
    May 14, 2023 at 13:24
  • 1
    $\begingroup$ Oh, iti s not so much that differential geometry came in, but that it gives the most satisfying answer. I worked quite hard to get the solution in the form that basic undergraduate physics would get, but if I just presented that, then you will have seen a complicated mess and not seen the physical reason why it should be so. $\endgroup$ May 14, 2023 at 13:31

Notice that $\frac{d\theta}{dt}$ and $\frac{d\phi}{dt}$ do not have units of velocity (m/s), so right there you have a problem.

Velocity in the $\hat \theta$ direction is "how much distance $ds$ in the $\hat \theta$ direction is traversed in the time interval $dt$."

So on the surface of some sphere with radius $r$, say on the equator, what is the arc distance between two points separated by a small interval of longitude $d\theta$? The answer is $r d\theta $.

Now what if you are not on the equator? Near the North pole, the arc distance traveled to traverse an interval of longitide $d\theta$ is much smaller than at the equator. It turns out the general formula is $ds=r\sin \phi d\theta$, assuming the zenith angle (latitude angle) $\phi$ is 0° at the North Pole and goes to 90° at the equator. So the formula for $v_{\theta}$ is

$$v_{\theta}=\frac {ds}{dt} = r\sin \phi \frac{ d\theta }{dt} $$

I'll let you go through the similar logic for $v_{\phi}$.

With that said, the bigger reason for why this happens is, when you take the vector for position $\bf{s}$ in spherical coordinates:

$$ \textbf{s} = s_r \hat r + s_{\theta} \hat{\theta} + s_{\phi}\hat{\phi} $$

and apply the vector formula for velocity:

$$ \textbf{v} = \frac{ d\textbf{r} }{dt} $$

the unit vector functions $ \hat r,\, \hat {\theta},\,\hat{\phi}$ are not constant. Their derivatives also have to be taken into account using the product rule, which is where those extra factors like $r\sin\phi$ come from.


Spherical coordinates describe the position of a point in space in terms of a radius and two angles. Depending on the convention this looks like

$$ \vec{p} = \pmatrix{x \\ y \\ z} = \pmatrix{ r \cos \varphi \cos \psi \\ \sin \psi \\ -r \cos \varphi \sin \psi } $$

But this does not define a local coordinate system at this point in order to transform vectors into a new vector basis (directions).

So now we can do the same as above but as a series of the following transformations to describe the local orientation ${\rm R}$ such that

$$\vec{p} = {\rm R}_Y(\varphi)\, {\rm R}_Z(\psi) \pmatrix{r \\ 0 \\ 0} $$

The columns of ${\rm R}$ are unit vectors derived from

$${\rm R} = \begin{Bmatrix} \cos \varphi \cos \psi & -\cos \varphi \sin \psi & \sin \varphi \\ \sin \psi & \cos \psi & 0 \\ -\sin \cos \psi & \sin \varphi \sin \psi & \cos \varphi \end{Bmatrix}$$

The above is composed from the two elementary rotations ${\rm R}_Y(\varphi)$, and ${\rm R}_Z(\psi)$ and they transform a vector of length $r$ along the x axis to a vector pointing to $\vec{p}$

The inverse of this transformation is the matrix transpose

$${\rm R}^{-1} = \begin{Bmatrix} \cos \varphi \cos \psi & \sin \psi & -\sin \cos \psi \\ -\cos \varphi \sin \psi & \cos \psi & \sin \varphi \sin \psi \\ \sin \varphi& 0 & \cos \varphi \end{Bmatrix}$$

The above can be used to change the basis vectors on any vector. For example the cartesian velocity $\vec{v}$ expressed along the local directions would be

$$ \vec{v}_{\rm local} = {\rm R}^{-1} \vec{v} $$


$$ \pmatrix{ v_r \\ v_\varphi \\ v_\psi} = \pmatrix{ v_x \cos \varphi \cos \psi + v_y \sin \psi - v_z \sin \varphi \cos \psi \\ -v_x \cos \varphi \sin \psi + v_y \cos \psi + v_z \sin \varphi \sin \psi \\ v_x \sin \varphi + v_z \cos \varphi } $$

The interpretation of $v_r$ is the velocity component along the direct which increases $r$, and $v_\varphi$ is the velocity component along the direction which increases $\varphi$, and $v_\psi$ is the velocity component along the direction which increases $\psi$.

If you take the analogy of a person sitting on the earth, the $v_r$ is the local up direction, $v_\varphi$ the direction east/west, and $v_\psi$ the direction north/south.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.