找回密码
 注册
关于网站域名变更的通知
查看: 443|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-22 14:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?+ E6 J* I: g$ D& ~8 N9 s2 Q
- u$ S4 o2 p4 T- ?5 x8 ]
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。+ E1 |5 U# n5 U; _9 j
' N' B+ w  I. ~, h
, i1 _# d) y% u* Y4 c
文档中的一个图片:
2 J! G0 m% O% U; l7 f; o8 o
. O# W& L# r6 e( i$ {: N这里的P点就是那个direction? origin指图片中心?
3 |, N. i( l& F! c8 J' o+ Q' g* H/ J  _8 ]6 y

4 {7 z3 W! d4 C* ~9 X; h3 G写了一个小的测试程序进行测试:
. ^$ T+ E# M# I
  • figure;
  • plot3(0,0,0,'ko','MarkeRFaceColor','k');%画出原点
  • hold on;grid on;
  • plot3([0,0],[0,200],[0,0],'r');%画一条轴
  • xlabel('x/mm');ylabel('y/mm');zlabel('z/mm');
  • x = linspace(0,300,100);
  • y = linspace(0,200,100);
  • z = zeros(100,100);
  • plan0 = surf(x,y,z);alpha(.3);shading interp %画平面0
  • plan1 = surf(x,y,z);alpha(.3);shading interp %画平面1
  • plan2 = surf(x,y,z);alpha(.3);shading interp %画平面2
  • direct=[0 1 0];
  • rotate(plan1,direct,10);%平面1旋转10度
  • rotate(plan2,direct,30);%平面2旋转30度
    # |" o. A, x7 l; S8 x' P- ?- K% z
8 Z% e2 g' C. A9 ~5 C# Q

8 W& P4 u% ?, k& i8 R% j测试效果:
6 a3 M6 p; T6 V9 a) {, y
1 ?& }: b3 c0 |2 q. Y( z可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。+ ~, t  y# m) K' |/ G
那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?& ~* t6 n5 g5 Z& |: t1 Y
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
9 P  x6 k! U. i8 g5 W% a+ M! y

该用户从未签到

2#
发表于 2020-4-22 15:42 | 只看该作者
https://ww2.mathworks.cn/help/matlab/creating_plots/rotate-about-an-arbitrary-axis.html你看看这个能帮你吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 15:15 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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