Rigid3d Tutorial →

// Rotation: 90 deg around Z Quaterniond q = Quaterniond(Eigen::AngleAxisd(M_PI/2, Vector3d::UnitZ())); Vector3d t(1.0, 0.0, 0.0); SE3d T_ab(q, t); // Transformation from frame A to frame B

In robotics, computer vision, and 3D graphics, the ability to represent rotations and translations in 3D space is fundamental. The Rigid3D object (often found in libraries like Sophus , Eigen , geometry_msgs , or tf2 ) is the industry-standard way to do this. Unlike a 4x4 homogeneous matrix, Rigid3D separates rotation (SO(3)) and translation, offering better numerical stability and mathematical clarity. rigid3d tutorial

p_a = np.array([0, 1, 0]) p_b = T[:3,:3] @ p_a + T[:3,3] print(p_b) # [0., 0., 0.] If you have ( T_bc ) and ( T_ab ), the transform from ( a ) to ( c ) is: // Rotation: 90 deg around Z Quaterniond q