I'm working on predicting the path of a point in 3D space for a game; at any moment, I'll have the point's linear velocity vector $\vec v (x, y, z)$ in m/s, and angular velocity $\vec\omega$ in rads/s (relative to $x, y, z$ axes) at position $p_0$.

The velocities' magnitudes and relative orientations don't change (that is, the point maintains uniform circular motion), how do I go about predicting the point's position at time $t$?

My assumption at this point is that there is a calculable $\vec r$ that describes uniform circular motion around a central point $o$ such that $\vec v = \vec\omega × \vec r$, and that $\vec r = \frac{\vec v × \vec\omega}{|\vec\omega|^2}$, with $p_0 = o + \vec r$

Given that $\vec v$ will have a constant relative orientation (tangential to the path of uniform circular motion)... from the origin position $o$, the position of the point $p$ at any time $t$ would be calculable as a function of $\vec\omega(t)$, but I'm a bit fuzzy on how to do that in 3D space. I get that I'm close, it's a function of $rt\omega_{x,y,z}$, but I can't get it over the finish line.

Are my assumptions correct, and if so, what is the function that describes the point $p$ at time $t$?

  • $\begingroup$ $\vec v$ and $\vec\omega$ are not independent quantities, so it does not make sense to use both of them. Also, if you're assuming uniform circular motion, why can't you just say $\vec r(t)=(r_0\cos t,r_0\sin t)$? $\endgroup$
    – Sandejo
    Commented Oct 1, 2021 at 16:32
  • $\begingroup$ So $\omega$ does not represent the rotation of the object, but the rate at which the observation angle changes. $\endgroup$ Commented Oct 1, 2021 at 16:48
  • $\begingroup$ Given that a point does not or cannot rotate (it has zero spatial dimensions) can you explain what does $\vec{\omega}$ is measuring? $\endgroup$ Commented Oct 1, 2021 at 16:56
  • $\begingroup$ @Sendjo: I don't understand, unfortunately, as $\vec r$ is in three dimensions, and the resulting vector you've provided is in two dimensions in a flat plane; the plane of motion for this point would be some kind of oblique plane. Also don't I need $\vec v$ to determine the origin point $o$ of the uniform motion? My understanding is that $\omega$ is measuring the characteristics of the object's adjustments to its path. It's not so much a rotation of a 0-D point but rather the characteristics of its turning radius. $\endgroup$ Commented Oct 1, 2021 at 17:02

1 Answer 1


If as you mentioned in the comments $\vec{\omega}$ is defined such that

$$ \vec{v} = \vec{\omega} \times ( \vec{p}_0 - \vec{p}_C ) $$

where $\vec{p}_0$ is the position of the object at the time $\vec{v}$ and $\omega$ is measured, and $\vec{p}_C$ is a point on the instant axis of rotation.

To find $\vec{p}_C$ use the vector triple product to get

$$ \require{cancel} \begin{aligned}\vec{\omega}\times\vec{v} & =\vec{\omega}\times\left(\vec{\omega}\times(\vec{p}_{0}-\vec{p}_{C})\right)\\ & =\vec{\omega}\left(\cancel{\vec{\omega}\cdot(\vec{p}_{0}-\vec{p}_{C})}\right)-(\vec{p}_{0}-\vec{p}_{C})\left(\vec{\omega}\cdot\vec{\omega}\right)\\ \vec{p}_{C} & =\vec{p}_{0}+\frac{\vec{\omega}\times\vec{v}}{\vec{\omega}\cdot\vec{\omega}} \end{aligned} $$

The reason for canceling the terms above is because $\vec{p}_C$ can be any point along with the axis of rotation and any terms perpendicular to $\vec{\omega}$ get canceled out by the dot product. So only the parallel terms matter, and we might as well choose them such as to cancel this term.

Once you have the center of rotation $\vec{p}_C$ then use a rotation matrix to rotate along an axis $\hat{z} = \frac{\vec{\omega}}{ \| \vec{\omega} \| }$ and the angle $\theta = \| \vec{\omega} \| t$

$$ \vec{p}(\theta) = \vec{p}_C + \mathrm{rot}(\hat{z}, \theta) \left( \vec{p}_0 - \vec{p}_C \right) $$

  • $\begingroup$ That's it! I didn't think to normalize a $\hat z$ against the rotation vector $\vec\omega$. Thanks! $\endgroup$ Commented Oct 1, 2021 at 17:36

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.