主要内容

矩阵旋转和变换

这个例子展示了如何使用符号数学工具箱™和矩阵在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)平等的

图中包含一个轴对象。axis对象包含一个类型为参数化函数曲面的对象。

创建旋转矩阵

创建3×3矩阵处方变化中,Rz用一个角度表示平面旋转t关于x-,y- - - - - -,z分别设在。

信谊tRx = [1 0 0;0 cost - sint;0 sint cost)
Rx =

1 0 0 0 因为 t - t 0 t 因为 t

y = [cos(t) 0sin (t);0 1 0;sin (t) 0 cost)
一=

因为 t 0 t 0 1 0 - t 0 因为 t

Rz = [cos(t) -sin(t) 0;sint cost 0;0 0 1]
Rz =

因为 t - t 0 t 因为 t 0 0 0 1

在三维中绕每个轴旋转

首先,旋转表面绕x-轴逆时针45度。

xyzRx = Rx * [x, y, z];Rx45 = subs(xyzRx, t, pi/4);fsurf(Rx45(1), Rx45(2), Rx45(3))) title('绕x逆时针旋转\ /4 ')轴平等的

图中包含一个轴对象。坐标轴对象标题R o t t i n g空白b y空白π/ 4空白b o t u空白x,空白c o u n t e R c l o c k w i s e包含parameterizedfunctionsurface类型的一个对象。

旋转的z顺时针方向90度。

xyzRz = Rz * Rx45;Rx45Rz90 = subs(xyzRz, t, -pi/2);fsurf(Rx45Rz90(1), Rx45Rz90(2), Rx45Rz90(3)) title()'绕z方向顺时针旋转\ /2 ')轴平等的

图中包含一个轴对象。标题为R o ta t n空白b y空白pi / 2空白a b o u t空白z,空白c l o c k的轴对象包含一个类型参数化函数曲面的对象。

旋转的y顺时针方向45度。

xyzRy = * Rx45Rz90一块;Rx45Rz90Ry45 = subs(xyzRy, t, -pi/4);fsurf(Rx45Rz90Ry45(1), Rx45Rz90Ry45(2), Rx45Rz90Ry45(3)) title(中文)'绕y顺时针旋转\ /4 ')轴平等的

图中包含一个轴对象。标题为R o ta t n空白b y空白pi / 4空白a b o u t空白y,空白c l o c k的轴对象包含一个类型参数化函数曲面的对象。

规模和旋转

沿着这个面按3倍缩放z设在。你可以把表达式乘以z3,z = 3 * z.更一般的方法是创建一个缩放矩阵,然后将缩放矩阵乘以坐标向量。

S = [1 0 0;0 1 0;0 0 3];xyzScaled = S * [x;y;z]
xyzScaled =

因为 u v u v 3. 因为 v v

fsurf(xyzScaled(1), xyzScaled(2), xyzScaled(3)) title('沿z缩放3 ')轴平等的

图中包含一个轴对象。标题为“沿z缩放3”的axis对象包含一个参数化函数曲面的对象。

旋转缩放的表面x-,y- - - - - -,z按顺时针方向45度z,然后y,然后x.这个变换的旋转矩阵如下所示。

R = Rx *一* Rz
R =

因为 t 2 - 因为 t t t σ 1 因为 t 2 - t 3. - 因为 t t t 2 - 因为 t 2 t σ 1 因为 t 2 在哪里 σ 1 因为 t t 2 + 因为 t t

使用旋转矩阵来找到新的坐标。

xyzScaledRotated = R * xyzScaled;xyzSR45 = subs(xyzscaledrotation, t, -pi/4);

绘制表面。

fsurf(xyzSR45(1), xyzSR45(2), xyzSR45(3)) title('绕x, y, z顺时针旋转\pi/4 ')轴平等的

图中包含一个轴对象。坐标轴对象标题R o t t i n g空白b y空白π/ 4空白b o t u空白x, y空白,空白z n d空白,空白c l o c k w i s e包含parameterizedfunctionsurface类型的一个对象。

检查旋转矩阵的性质R

旋转矩阵是正交矩阵。因此,转置R也是它的逆,和的行列式R是1。

简化(R。”* R)
ans =

1 0 0 0 1 0 0 0 1

简化(侦破(R))
ans =
                 
                  
                   
                    1