Transform 3D point cloud

11 views (last 30 days)
Ernest Porqueras
Ernest Porqueras on 17 Mar 2021
Edited: Matt J on 17 Mar 2021
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 Comments
Ernest Porqueras
Ernest Porqueras on 17 Mar 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 on 17 Mar 2021
I think this function only allows rotating along 1 axis.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 17 Mar 2021
Edited: Matt J on 17 Mar 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

More Answers (1)

Bjorn Gustavsson
Bjorn Gustavsson on 17 Mar 2021
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

Community Treasure Hunt

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

Start Hunting!