Rigid3d Tutorial [2021] May 2026
[ T_ac = T_ab \cdot T_bc ]
Vector3d p_a(0.0, 1.0, 0.0); Vector3d p_b = T_ab * p_a; std::cout << "p_b: " << p_b.transpose() << std::endl; // Expected: after 90° Z rot: (0,1,0) -> (-1,0,0) then + translation (1,0,0) -> (0,0,0) rigid3d tutorial
Quaterniond q = T_ab.unit_quaternion(); // rotation as quaternion Vector3d t = T_ab.translation(); [ T_ac = T_ab \cdot T_bc ] Vector3d p_a(0
T_ba = np.linalg.inv(T_ab) # For rigid transforms, this is more efficient: R_inv = T_ab[:3,:3].T t_inv = -R_inv @ T_ab[:3,3] C++: Vector3d p_b = T_ab * p_a
SE3d T_ba = T_ab.inverse();