So I have a quaternion representing the difference between two other rotations:

```
Quaternion differenceRot = targetQuat * Quaternion.Inverse(sourceQuat);
```

Sometimes, depending on where source and target quaternions, are, the differenceRot will represent a very large rotation in the opposition direction of the shorter rotation. It’s the equivalent of rotating 340 degrees in one direction instead of 20 degrees in the other.

I can fix it by converting to angle and axis, then doing a “angle = (180 + angle) % 360 - 180;” thing, then converting the angle and axis back into a new Quaternion.

I assume this is slow.

Is there a faster way to do this? I don’t know anything about the internal coordinates of quaternions - is there anything analogous/similar to the “angle = (180 + angle) % 360 - 180” operation that I could do on the individual quaternion coordinates, or do I have to do do this conversion to and from angle/axis?