Hello. I have a set of Euler data (yaw, pitch roll). I need to calculate the relative differences in the, for example, the yaw angle from the start position.

I have a problem in calculating this since, say, the yaw angle will go from 0 to 360 degree. If the initial position is at 356 degree, I am not sure how to handle the data when the movement yaws to 1 again. If I use x-initialPosition metric, i will get 1-356, which is not the answer. Any suggestion?

This also applies to pitch that goes from 180 to -180

Answer by Guillaume
on 27 Sep 2016

Edited by Guillaume
on 27 Sep 2016

Guillaume
on 27 Sep 2016

You said you wanted 0-360 for yaw. If, instead you want -180 to 180, simply:

mod(angle + 180, 360) - 180

Angles follow modular arithmetic. You perform modular arithmetic using mod.

Sharah
on 27 Sep 2016

no, i mean, the range of the yaw is 0 to 360. so if that start PointStart = 357, and Point2 = 3; the mod(3-357, 360) would work, which is 6.

however, let say the object rotates to the left, and Point3 is now = 351. instead of mod(351-357, 360) giving -6, the answer is now -354.

I'd like to find a way that can calculate these angle automatically without checking if they are negative or positive

Guillaume
on 27 Sep 2016

mod(351-387, 360) is 354 not -354. Note that -6 and 354 are the same angles (modulo 360).

As demonstrated (twice now), you perform you difference as usual. If you want to display it in the range [0,360[ you use

mod(difference, 360)

If you want to display it in the range [-180, 180[ you use

mod(difference + 180, 360) - 180

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.