We should document that CoordinateSystem and Rotation3d assume a right-handed coordinate system and have CoordinateSystem throw an exception if the provided axes form a left-handed coordinate system instead.
CoordinateSystem assumes right-handed coordinate systems because it defines rotations with respect to the NWU coordinate system. The NEU coordinate system is left-handed, so a CoordinateSystem constructed for NEU passes a rotation matrix to Rotation3d that isn't special orthogonal. The error message for this isn't helpful, but we can have CoordinateSystem give a more specific one instead.
We should document that
CoordinateSystemandRotation3dassume a right-handed coordinate system and haveCoordinateSystemthrow an exception if the provided axes form a left-handed coordinate system instead.CoordinateSystemassumes right-handed coordinate systems because it defines rotations with respect to the NWU coordinate system. The NEU coordinate system is left-handed, so aCoordinateSystemconstructed for NEU passes a rotation matrix toRotation3dthat isn't special orthogonal. The error message for this isn't helpful, but we can haveCoordinateSystemgive a more specific one instead.