这个例子展示了如何使用符号数学工具箱™和矩阵在3D中进行旋转和变换。
定义参数曲面x (u, v)
,y (u, v)
,z (u, v)
如下。
信谊uvx = cos (u) * sin (v);y =罪(u) * (v)的罪;z = cos (v) * sin (v);
使用fsurf
.
fsurf轴(x, y, z)平等的
创建3×3矩阵处方
,变化中
,Rz
用一个角度表示平面旋转t
关于x
-,y
- - - - - -,z
分别设在。
信谊tRx = [1 0 0;0 cost - sint;0 sint cost)
Rx =
y = [cos(t) 0sin (t);0 1 0;sin (t) 0 cost)
一=
Rz = [cos(t) -sin(t) 0;sint cost 0;0 0 1]
Rz =
首先,旋转表面绕x
-轴逆时针45度。
xyzRx = Rx * [x, y, z];Rx45 = subs(xyzRx, t, pi/4);fsurf(Rx45(1), Rx45(2), Rx45(3))) title('绕x逆时针旋转\ /4 ')轴平等的
旋转的z
顺时针方向90度。
xyzRz = Rz * Rx45;Rx45Rz90 = subs(xyzRz, t, -pi/2);fsurf(Rx45Rz90(1), Rx45Rz90(2), Rx45Rz90(3)) title()'绕z方向顺时针旋转\ /2 ')轴平等的
旋转的y
顺时针方向45度。
xyzRy = * Rx45Rz90一块;Rx45Rz90Ry45 = subs(xyzRy, t, -pi/4);fsurf(Rx45Rz90Ry45(1), Rx45Rz90Ry45(2), Rx45Rz90Ry45(3)) title(中文)'绕y顺时针旋转\ /4 ')轴平等的
沿着这个面按3倍缩放z
设在。你可以把表达式乘以z
3,z = 3 * z
.更一般的方法是创建一个缩放矩阵,然后将缩放矩阵乘以坐标向量。
S = [1 0 0;0 1 0;0 0 3];xyzScaled = S * [x;y;z]
xyzScaled =
fsurf(xyzScaled(1), xyzScaled(2), xyzScaled(3)) title('沿z缩放3 ')轴平等的
旋转缩放的表面x
-,y
- - - - - -,z
按顺时针方向45度z
,然后y
,然后x
.这个变换的旋转矩阵如下所示。
R = Rx *一* Rz
R =
使用旋转矩阵来找到新的坐标。
xyzScaledRotated = R * xyzScaled;xyzSR45 = subs(xyzscaledrotation, t, -pi/4);
绘制表面。
fsurf(xyzSR45(1), xyzSR45(2), xyzSR45(3)) title('绕x, y, z顺时针旋转\pi/4 ')轴平等的
R
旋转矩阵是正交矩阵。因此,转置R
也是它的逆,和的行列式R
是1。
简化(R。”* R)
ans =
简化(侦破(R))
ans =