[non-BE] Fix for QuaternionSlerp inaccuracies in corner cases
- Related issues: #1067 (closed), BASOP #738
- Requested reviewers:
Reason why this change is needed
As reported in BASOP ticket #738, the original implementation of QuaternionSlerp function is very simplistic, which results in inaccuracies in corner cases. An updated QuaternionSlerp has been provided to BASOP respository. This implementation has been thoroughly tested against the quaternion slerp implementation in .NET Framework.
Description of the change
The main changes are:
- Changing sign of the second quaternion in the case of angles between quaternions above 180 degrees,
- Using linear interpolation instead of spherical interpolation for very small angles between quaternions less than 0.1 degree.
Affected operating points
- Binaural rendering with
- Long-term average head orientation tracking
- External orientation tracking
Related to #1067 (closed)