4 ms·
If you take the Matrix logarithm of an SO(3) (3x3 rotation matrix) you get a 3-vector that represents the axis of rotation, scaled by the rotation amount (in ra
by rsp1984 2y ago
If you take the Matrix logarithm of an SO(3) (3x3 rotation matrix) you get a 3-vector that represents the axis of rotation, scaled by the rotation amount (in radians). This is also a cheap operation using the inverse Rodrigues formula [1].
The 3-vector is not a bijective representation (starts repeating after length == 2*pi) but otherwise is the most elegant of them all, IMO. No need for rotors or quaternions. Plus you can simply use Rodrigues to get a rotation matrix back.
[1] https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
- mecsred 2y agoThanks for the link to the Rodrigues form, that's quite interesting. Slightly confused by your comment though, shouldn't the matrix logarithm produce another matrix?
- rsp1984 2y agoYou're correct. The logarithm produces what's essentially a cross product matrix, 0 on the diagonal and symmetric off-diagonal. The off-diag elements are the 3-vector I was talking about. Thanks for pointing that out.
- nyrikki 2y agoSO(3) is nonabelian, and isn't simply connected, which is why the surjective homomorphsin to SU(2) is valuable, particularly in 3D graphics.
- itishappy 2y agoComposing axis-angle representations gets real weird real fast. You can convert them into 9 element rotation matrices, but then you lose the benefits of storing them using only 3 elements in the first place.