Main Content

绕任意轴旋转

此示例演示如何绕任意轴旋转对象。

旋转前转换到原点

旋转是绕原点进行的。因此,您需要执行转换,以将旋转的目标轴暂时定在原点。应用旋转变换矩阵后,将对象转换回原始位置。

旋转曲面

此示例演示如何让曲面绕 y 轴旋转。

创建曲面和变换

将变换对象设为曲面的父级。

t = hgtransform;
surf(peaks(40),'Parent',t)
view(-20,30)
axis manual

Figure contains an axes object. The axes object contains an object of type surface.

创建变换

设置一个 y 轴旋转矩阵,将曲面旋转 -15 度。

ry_angle = -15*pi/180; 
Ry = makehgtform('yrotate',ry_angle);
t.Matrix = Ry;

Figure contains an axes object. The axes object contains an object of type surface.

曲面绕 y 轴旋转 -15 度,经过原点。

转换曲面并旋转

现在绕 y 轴旋转曲面,经过点 x = 20。

创建两个转换矩阵,一个将曲面沿 x 轴转换 -20 单位,另一个往回转换 20 单位。用旋转矩阵按照正确的顺序串联两个转换矩阵,并设置该变换。

Tx1 = makehgtform('translate',[-20 0 0]);
Tx2 = makehgtform('translate',[20 0 0]);
t.Matrix = Tx2*Ry*Tx1;

Figure contains an axes object. The axes object contains an object of type surface.