3D Rotation Matrix
Ältere Kommentare anzeigen
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 Kommentar
Walter Roberson
am 24 Jul. 2017
Bearbeitet: Walter Roberson
am 24 Jul. 2017
Duplicates https://www.mathworks.com/matlabcentral/answers/349968-3d-rotation-matrix but this one appears to have been updated so I have closed that.
Akzeptierte Antwort
Weitere Antworten (1)
Herve Hugonnet
am 20 Jun. 2019
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] ;
1 Kommentar
Alec
am 23 Okt. 2019
Thanks for this
Kategorien
Mehr zu Point Cloud Processing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!