Rotate the 3D point data about Z axis , and // OX OY

1 次查看(过去 30 天)
Let's say: I have matrix A=[x y z] with ~60.000 point data . Please see attachment file, and figure:
Question: How can I rotate the 3D point data about Z axis , and // OX OY (as illustration)? Additional, we don't know the rotation angel. I do hope the result will be like below figure.

采纳的回答

Bruno Luong
Bruno Luong 2018-11-24
编辑:Bruno Luong 2018-11-24
xyz=load('data.txt');
xyzc = mean(xyz,1);
xyzr = xyz - xyzc;
[~,~,V] = svd(xyzr,0);
% Rotate 90°: so that the long size // to y_axis
V = V*[0 -1 0;
1 0 0;
0 0 1];
xyzr = xyzc + xyzr*V;
close all
hold on
plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.b');
plot3(xyzr(:,1),xyzr(:,2),xyzr(:,3),'.r');
axis equal
xlabel('x')
ylabel('y')
zlabel('z')
view(3)
  2 个评论
ha ha
ha ha 2018-11-24
Thanks @Bruno Luong. I follow your code. But there are small error as the below figure. Do you know how to correct it?
Untitled.png

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Images 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by