EDA365电子论坛网
标题:
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?
[打印本页]
作者:
onesimus
时间:
2020-4-22 14:51
标题:
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?
& R% C& o; ?, \' H( V
$ Z, b) R' K% x, v8 c5 l, v: Q0 ?7 Q
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。
) H3 b' Q# P2 R1 x4 G
- r) n4 ?/ l# X0 Q& S0 m) q9 p j1 k
U$ C) H9 o* B
文档中的一个图片:
/ _7 ^5 Q$ \ \% }5 ?& N0 Z% A
1.png
(60.38 KB, 下载次数: 8)
下载附件
保存到相册
2020-4-22 14:51 上传
" @6 Z1 W& T2 r& s, W7 @) N: b
这里的P点就是那个direction? origin指图片中心?
e2 p4 ^1 U7 V6 @* V- m' s o* B
; ~, d8 V& L5 j4 b! ?+ t
; s! f: y5 H: U" u
写了一个小的测试程序进行测试:
' Z; V1 S" _3 Q
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度
# _0 I3 g9 W0 R$ ]" T& G, ?0 D8 ]
K7 R, {6 b; D; e7 L1 ^
2 ^9 Z; d! [; I) k+ K
测试效果:
0 t% p% U- Q% X$ a; Q1 T+ J0 U5 n
2.png
(65.71 KB, 下载次数: 6)
下载附件
保存到相册
2020-4-22 14:51 上传
m" w' {: X+ `
可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
0 z9 c, u5 u2 }
那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?
# e& _3 C6 Y& k! P( ]& t
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
$ j) y- ~( o( @
作者:
Racheler
时间:
2020-4-22 15:42
https://ww2.mathworks.cn/help/matlab/creating_plots/rotate-about-an-arbitrary-axis.html你看看这个能帮你吗
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2