Contribution Made

PR Merged

It’s been 7 weeks since GSoC has started and I’m proud to announce that the first phase of the work has been merged into scipy!

The module is production ready and completely agnostic of the representation used. The following are supported:

  • Quaternions
  • Direction Cosine Matrices
  • Rotation Vectors
  • Euler Angles

The following operations on rotations are also supported:

  • Composition
  • Inversion
  • Application on vectors

Since it is possible to work with multiple rotations in one object, we also support numpy-like indexing and slicing on rotations.


Most of last week was spent in documenting and making minor changes to code. While I admit it was quite tedious, I honestly have a new-found appreciation for scipy (and numpy’s) extensive docs and the effort that goes into them. Without those, even this phase would have taken a much longer time.

It’s not over yet…

There’s still a lot of work to be done and exciting new features to be added:

  • Random sampling of rotations: While it seems simple in theory, the need to ensure that the rotations are uniformly distributed in 3D space makes it a little interesting.
  • Spherical Linear Interpolation of Quaternions: Ever used any video editing software where you specify a certain number of keyframes and the motion in interpolated between them automatically? Think that, but for quaternions. The Spherical Linear imposes a further constraint of constant angular velocity.
  • Qspline: Another interpolation algorithm that uses splines instead of straight lines for interpolation. Leads to smoother rotations.
  • Wahba’s Problem: Given two sets of vectors, how do you best estimate the rotation that describes them? This is a useful and well studied problem in spacecraft dynamics with a lot of interesting theory behind it.

Stay tuned for more updates!