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 件のコメント

Matt J
Matt J 2021 年 3 月 17 日
I cannot use this matrix with pctrasform and rigid3d.
Why not?
Ernest Porqueras
Ernest Porqueras 2021 年 3 月 17 日
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 2021 年 3 月 17 日
I think this function only allows rotating along 1 axis.

サインインしてコメントする。

 採用された回答

Matt J
Matt J 2021 年 3 月 17 日
編集済み: Matt J 2021 年 3 月 17 日

0 投票

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

その他の回答 (1 件)

Bjorn Gustavsson
Bjorn Gustavsson 2021 年 3 月 17 日

1 投票

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

カテゴリ

質問済み:

2021 年 3 月 17 日

編集済み:

2021 年 3 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by