So after three months of working, it is now time to gather my thoughts and look back on what I’ve achieved. This brief post will also serve as a work product submission link.
First things first, all my merged changes live here as a new scipy.spatial.transform submodule. As of writing, the package include the following functionality:
- The Rotation class:
- Initialize a rotation from quaternion, direction cosine matrix, euler angles or rotation vector.
- Allows a user to convert freely between any of the above representations.
- Supports composition and inversion as operations on rotations.
- Supports application of rotations on points / vectors.
- Also contains a method of estimating the rotation between two frames of observation.
- The Slerp class:
- Spherical linear interpolation of rotations. Essentially the shortest path of constant angular velocity between keyframes rotations.
There is a single outstanding pull request for the RotationSpline class, which will implement cubic spline interpolation of rotations and rename Slerp to RotationSlerp to logically separate them from the generic spline and slerp methods.
Once this pull request has been finalized, I will also write a tutorial for the whole spatial.transform package as an introduction on how to work with rotations.
Do go through the Rotation class documentation to get a general idea of the usage of the class. (Documentation links are only finalised after every release of scipy, so take a look at the developer documentation for now).