- 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
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Looky
2020-1-14
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 个)
Image Analyst
2020-1-15
编辑:Image Analyst
2020-1-15
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 3-D Scene Control 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!