## ang_diff(ANGLE* a, ANGLE* a1, ANGLE* a2)

Calculates the difference of two Euler angles. When the angle a2 is rotated by the result angle a, it ends up at a1.

### Parameters:

a1 - destination angle.
a2 - initial angle.
a - angle difference between a1 and a2.

Medium

### Remarks:

• ang_diff is not the same as vec_diff. The difference of three-dimensional angles can not be calculated by a mere subtraction, but requires matrix operations (see ang_to_matrix for an example). As infinitely many different rotations can go from the same start angles to the same end angles, the result angle a is normally not fully determined by this operation, but has still one degree of freedom.
• A7.82 The resulting pan, tilt, roll angles are in the -180..+180 range, so their signs can be used to determine whether the rotation is clockwise or counterclockwise.

### Example (lite-C):

```// Calculate an angle that aligns an axis to a vector
function ang_align(ANGLE* ang,VECTOR* to,VECTOR* axis){   ANGLE axis_angle,target_angle;   vec_to_angle(axis_angle,axis);  // f.i. (0,0,1) for the vertical axis   vec_to_angle(target_angle,to);  // target angle to align to   ang_diff(ang,target_angle,axis_angle); // rotate angle by the difference of the axis and vector}
```