I have a point cloud and a rotation matrix like this:
rot=[ -0.48664090 0.36675647 0.79288739;
-0.67601788 -0.73296887 -0.075871207;
-0.55333579 0.57292831 -0.60462612 ]
How can I transform the point cloud using this rotation matrix? I cannot use this matrix with pctrasform and rigid3d.

3 comentarios

Matt J
Matt J el 17 de Mzo. de 2021
I cannot use this matrix with pctrasform and rigid3d.
Why not?
Ernest Porqueras
Ernest Porqueras el 17 de Mzo. de 2021
Error using rigid3d (line 139)
The rigid transformation matrix must only contain a rotation and a translation.
The final column must consist of zeros, except for a one in the last row.
Ernest Porqueras
Ernest Porqueras el 17 de Mzo. de 2021
I think this function only allows rotating along 1 axis.

Iniciar sesión para comentar.

 Respuesta aceptada

Matt J
Matt J el 17 de Mzo. de 2021
Editada: Matt J el 17 de Mzo. de 2021
Funny. Well, you can always use affine3d,
rot=[ -0.48664090 0.36675647 0.79288739;
-0.67601788 -0.73296887 -0.075871207;
-0.55333579 0.57292831 -0.60462612 ];
T=eye(4);
T(1:3,1:3)=rot;
tform=affine3d(T)
tform =
affine3d with properties: T: [4×4 double] Dimensionality: 3
As a side note, your matrix is not a proper rotation, since its determinant is -1.
det(rot)
ans = -1.0000

Más respuestas (1)

Bjorn Gustavsson
Bjorn Gustavsson el 17 de Mzo. de 2021

1 voto

If you have a 3-x-n array of point-coordinates you can rotate them in 2 ways, either rotate the points or the coordinate system.
For example like this:
r_rotated = rot*r_points;
HTH

Preguntada:

el 17 de Mzo. de 2021

Editada:

el 17 de Mzo. de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by