Thanks for the nice explanation. I have a question regarding the extrinic codes you have shared.
```
# create extrinsic matrix
# --------------------------
# create rotation transformation matrix
R = create_rotation_transformation_matrix(angles, order)
R_ = np.identity(4)
R_[:3, :3] = R
# create translation transformation matrix
T_ = create_translation_matrix(offset)
E = np.linalg.inv(T_ @ R_)
E = E[:-1, :]
```
My question is why E is regarded as the extrinic matrix but not `T_@R_`. Thanks.