MATLAB Answers

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

12 views (last 30 days)
ha ha
ha ha on 24 Nov 2018
Edited: Bruno Luong on 24 Nov 2018
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.

  0 Comments

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 24 Nov 2018
Edited: Bruno Luong on 24 Nov 2018
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)

  1 Comment

ha ha
ha ha on 24 Nov 2018
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

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Tags