I have a particle trajectory where particle position is available at discrete time steps with respect of (0,0,0) in 3D. Time step is 0.05 sec. For reference, positions are shown in following image.Particle Positions

Particle velocity can be computed easily. My goal is to calculate angular velocity for each time step. Here are the different ways I have tried:

  1. Velocity vector For each consecutive time step we can calculate change in direction of velocity vector. let's suppose velocity at point 1 is $\bf{v_{1}}$ and at point 2 $\bf{v_{2}}$. We can calculate change in angle by $$ \theta = acos(\frac{\bf{v_{1}}.\bf{v_{2}}}{v_{1}v_{2}}) $$ I am using unit velocity vectors to compute this angle. Finally we can divide this by time step to acquire angular velocity.

  2. Position vector We can repeat the same procedure but we can use position vector.

  3. Wikipedia Page Formula I have also tried using this formula as listed at Wikipedia page: $$ \omega = \frac{\bf{r} \times \bf{v}}{r^{2}} $$ My confusion with this formula is the units. Is it per time step and if so do I need to multiply with 20 or not.

My issue is not with the calculation itself because I can manipulate rotation matrix and quaternion. My issue is that I do not know which vectors are useful here to calculate the angular velocity and how do I use them. Any comment or suggestion would be help full.

  • $\begingroup$ Perhaps this help you? physics.stackexchange.com/q/596622 . From the „static“ rotation matrix you can obtain three Euler angles $\endgroup$
    – Eli
    Nov 30, 2020 at 8:30
  • $\begingroup$ @Eli Yes I have looked at that question. As I do not have continuous function it becomes complicated. Off course I can try to fit a polynomial to acquire a function f(t) to calculate TNB axis but I think that is not the way to go in this particular case. $\endgroup$ Nov 30, 2020 at 12:25
  • $\begingroup$ A particle does not have angular velocity, as it occupies zero space. $\endgroup$ Sep 17, 2022 at 19:37
  • $\begingroup$ What interpolation function did you use to get velocity, because finite difference is going to produce a lot of noise. $\endgroup$ Sep 17, 2022 at 19:43
  • $\begingroup$ I used finite difference method. You are right that it produces a lot of noise. Now 2 years later, we ended up using a piecewise polynomial to fit the data. This also smooth the signal. We then simply do the analytical derivation to calculate the velocity. $\endgroup$ Sep 21, 2022 at 11:28

1 Answer 1


You have a time series $\mathbf r (n\Delta t)$ where $\Delta t = 0.05$ seconds. To apply the formula

$$\mathbf \omega = \frac {\mathbf r \times \mathbf v}{r^2}$$

at time $t=n\Delta t$ start with

$$\mathbf v(t) \approx \frac{\mathbf r(t+\Delta t) - \mathbf r(t)}{\Delta t} = 20(\mathbf r(t+\Delta t) - \mathbf r(t))$$


$$\mathbf \omega (t) \approx 20 \frac {\mathbf r(t) \times \mathbf r(t+\Delta t)}{r^2}$$

since $\mathbf r(t) \times \mathbf r(t)=0$. The units here are radians per second. If you want radians per time step omit the factor of $20$.

Note that this gives you the instantaneous angular velocity about the origin - the angular velocity about any other point will be different.

  • $\begingroup$ Thanks. I have computed it and my histogram is distributed from 1 to 4 degrees. This is not that high as I expected because I do have a lot of turns. But may be per time step is not that high. $\endgroup$ Nov 30, 2020 at 14:07

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.