Transform 3D point cloud

6 Ansichten (letzte 30 Tage)
Ernest Porqueras
Ernest Porqueras am 17 Mär. 2021
Bearbeitet: Matt J am 17 Mär. 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 Kommentare
Ernest Porqueras
Ernest Porqueras am 17 Mär. 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 am 17 Mär. 2021
I think this function only allows rotating along 1 axis.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 17 Mär. 2021
Bearbeitet: Matt J am 17 Mär. 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

Weitere Antworten (1)

Bjorn Gustavsson
Bjorn Gustavsson am 17 Mär. 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!

Translated by