Asked by Sagar
on 30 Mar 2014

I need to rotate my 3d dataset defined by x,y,z coordinate along x axis at a specified angle (say 45 degree). This kinds of rotations are often needed when processing scanner and LIDAR data. MATLAB can do exactly what I want to do, but in graphic objects only i.e. using rotate(h,direction,alpha). However, this doesn't change the source data. I need to get the new rotated data, how can I retrieve the new rotated x,y,z data? Or, could you please suggest how to calculate in MATLAB?

Thank you,

Answer by Roger Stafford
on 30 Mar 2014

Accepted Answer

Let X,Y,Z be arrays of the rotated points in the dataset. For rotation along the x-axis:

X = x;

Y = y*cos(p)-z*sin(p);

Z = y*sin(p)+z*cos(p);

For rotation p radians in the direction from the y-axis toward the z-axis, that is, in accordance with the "right-hand rule" about the positive x-axis.

Sagar
on 31 Mar 2014

Visa Suomi
on 26 Sep 2017

Here are the transformations for all three axes.

Around X-axis:

X = x;

Y = y*cos(theta) - z*sin(theta);

Z = y*sin(theta) + z*cos(theta);

Around Y-axis:

X = x*cos(theta) + z*sin(theta);

Y = y;

Z = z*cos(theta) - x*sin(theta);

Around Z-axis:

X = x*cos(theta) - y*sin(theta);

Y = x*sin(theta) + y*cos(theta);

Z = z;

Sign in to comment.

Answer by Matt J
on 30 Mar 2014

See Syntax 3 of this FEX file

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.