ENH: scipy.spatial.transform.RigidTransformation for representing 3D coordinate frames

Hi all, I am looking for review and feedback on a major addition to the spatial.transform module: a new RigidTransformation class which allows for representing rotations and translations in 3D space.

Issue with a good amount of discussion here: ENH: spatial.transform: cover proper rigid transformations with a RigidTransformation class (rotations plus translations) · Issue #19254 · scipy/scipy · GitHub
PR here: ENH: spatial.transform: baseline implementation of `RigidTransformation` by scottshambaugh · Pull Request #22267 · scipy/scipy · GitHub

The goal here is to allow for the representation of arbitrary coordinate frames, which is fundamental functionality in the fields of robotics, aerospace, mechanical engineering, computer graphics, and anything that has to do with observing, modeling, analyzing, or controlling the physical world in 3D space. This is a natural extension of the existing Rotation class which I’ve done a fair amount of work on, and uses a similar interface.

The PR here gives a baseline implementation to build off of. There is some discussion in the issue about syntactic sugar, optimizations, and future functions that could be added, but those are out of scope for now and could cut in later. Docstrings and tests are fully fleshed out, so it’s in a “ready to review” state. Here’s one of the example plots to help show what is being implemented:

frames_C

One question I’m unsure on - this is a large change, so do we want to make this a beta feature? Target a feature branch? I’m not sure on how this is usually handled.

Thank you!