- Determine long axis of the spindle(how to do this depends on how you create your spindle). Save as vector r and normalize it: r=r/norm(r);
- Determine angle between r and the x-axis, use dot product between r and (1, 0, 0) => angle=acosd(dot(r,[1, 0, 0]))
- Determine rotation-vector u by crossing x-axis and r: u=cross([1,0,0],r);u=u/norm(u);
- Implement rotation matrix, see here: Wiki RotMat
- Multiply the vector representation of every single point with the rotation matrix
Rotate a 3D data cloud to align with one axis
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Nima Mirzaeian
am 13 Jan. 2020
Bearbeitet: Image Analyst
am 15 Jan. 2020
Hello! I have a cloud of data points in form of a spindle. How can I rotate the entire set so that the spindle long axis align with x axis? Thank you!
0 Kommentare
Akzeptierte Antwort
Looky
am 14 Jan. 2020
I'm not sure if any built in functions exist for this purpose.
However, one mathematical way would be the following:
Example implementation of the rotation matrix(angle in degree):
u=u/norm(u);
rotMat=eye(3)*cosd(angle(1))+sind(angle(1))*[0,-u(3), u(2);u(3),0,-u(1);-u(2),u(1) 0]+(1-cosd(angle(1)))* [u(1)^2, u(1)*u(2), u(1)*u(3); u(1)*u(2), u(2)^2, u(2)*u(3); u(1)*u(3), u(2)*u(3), u(3)^2 ];
vector=vector*rotMat;
vector=vector/norm(vector);
1 Kommentar
Weitere Antworten (1)
Image Analyst
am 15 Jan. 2020
Bearbeitet: Image Analyst
am 15 Jan. 2020
You might be looking for the view() function, if you want to rotate the whole coordinate system (data plus axes) so that you're looking at it "straight on" or from a certain angle/viewpoint.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!