Rigid3d Tutorial May 2026

[ T_ac = T_ab \cdot T_bc ]

SE3d T_ba = T_ab.inverse();

SE3d T_ab = SE3d(q_ab, t_ab); SE3d T_bc = SE3d(q_bc, t_bc); SE3d T_ac = T_ab * T_bc; rigid3d tutorial

[ p_B = R_AB \cdot p_A + t_AB ]

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: [ T_ac = T_ab \cdot T_bc ] SE3d T_ba = T_ab

// 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

Quaterniond q = T_ab.unit_quaternion(); // rotation as quaternion Vector3d t = T_ab.translation(); SE3d T_ab = SE3d(q_ab

# Rotation: 90 deg around Z r = R.from_euler('z', 90, degrees=True) t = np.array([1.0, 0.0, 0.0]) T = np.eye(4) T[:3,:3] = r.as_matrix() T[:3, 3] = t 4. Applying the Transformation Transform a 3D point ( p = (0, 1, 0) ) from frame A to frame B.