3D Rotation Matrix
이전 댓글 표시
Hi all, I'm new here and am trying to obtain a 3D rotation matrix.
Currently, I have a set of n points: (x1,y1,z1), (x2,y2,z2)...(xn,yn,zn)
from which I have designated one particular point as the origin, and obtained an x'- and y'- vector, based on some features. It is unimportant, for this question, how I chose my origin and got the x'- and y' vector. From the x'- and y' vector, I can also obtain the z'-vector by taking cross product of x' and y'.
Now, I would like to rotate all these points about the origin I have defined, such that the x'-, y'- and z'- vectors are in line with the x-, y- and z- axes respectively.
Hence, I am looking for a 3x3 rotation matrix, R, that can be applied to all points such that:
Transformed (x,y,z) = R * Original (x,y,z)
An example of the vectors to be mapped would be say:
x': [-0.2831, -0.9246, 0.2548]' to be mapped to x: [1 0 0]
y': [0.9242, -0.1919, 0.3303]' to be mapped to y: [0 1 0]
z' will be mapped automatically if the above 2 are satisfied.
Thank you for your help!
댓글 수: 1
Walter Roberson
2017년 7월 24일
편집: Walter Roberson
2017년 7월 24일
Duplicates https://www.mathworks.com/matlabcentral/answers/349968-3d-rotation-matrix but this one appears to have been updated so I have closed that.
채택된 답변
추가 답변 (1개)
Herve Hugonnet
2019년 6월 20일
The simplest if you do not have the phase array system toolbox is to define anonymous functions :
rotx = @(t) [1 0 0; 0 cos(t) -sin(t) ; 0 sin(t) cos(t)] ;
roty = @(t) [cos(t) 0 sin(t) ; 0 1 0 ; -sin(t) 0 cos(t)] ;
rotz = @(t) [cos(t) -sin(t) 0 ; sin(t) cos(t) 0 ; 0 0 1] ;
카테고리
도움말 센터 및 File Exchange에서 Point Cloud Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!