查看: 409|回复: 1|关注: 0

[已解决] rotate旋转函数使用细节,如何绕任意指定轴旋转

[复制链接]

新手

12 麦片

财富积分


050


3

主题

10

帖子

0

最佳答案
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?

按照官方文档rotate的使用说明rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。


文档中的一个图片:
2.png
这里的P点就是那个direction? origin指图片中心?


写了一个小的测试程序进行测试:
  1. figure;
  2. plot3(0,0,0,'ko','MarkerFaceColor','k');%画出原点
  3. hold on;grid on;
  4. plot3([0,0],[0,200],[0,0],'r');%画一条轴
  5. xlabel('x/mm');ylabel('y/mm');zlabel('z/mm');
  6. x = linspace(0,300,100);
  7. y = linspace(0,200,100);
  8. z = zeros(100,100);
  9. plan0 = surf(x,y,z);alpha(.3);shading interp %画平面0
  10. plan1 = surf(x,y,z);alpha(.3);shading interp %画平面1
  11. plan2 = surf(x,y,z);alpha(.3);shading interp %画平面2
  12. direct=[0 1 0];
  13. rotate(plan1,direct,10);%平面1旋转10度
  14. rotate(plan2,direct,30);%平面2旋转30度
复制代码
测试效果:
1.png
可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。


那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?


或者能否绕3维空间中的任意指定轴进行旋转呢?

论坛优秀回答者

18

主题

1990

帖子

421

最佳答案
  • 关注者: 81
发表于 2019-6-14 11:53:53 | 显示全部楼层 |此回复为最佳答案
多看帮助文档
说明你的matlab版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表