主要内容

矩阵旋转与变换

这个例子展示了如何使用符号数学工具箱™和矩阵在3D中进行旋转和转换。

定义并绘制参数曲面

定义参数曲面x (u, v)y (u, v)z (u, v)如下。

信谊uvX = cos(u)* sinv;Y = sin(u)* sinv;Z = cosv * sinv;

使用以下方法绘制曲面fsurf

fsurf轴(x, y, z)平等的

图中包含一个轴对象。axis对象包含一个parameterizedfunctionsurface类型的对象。

创建旋转矩阵

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

信谊tRx = [1 0 0;0 cost - sint;0 sint cos t]
Rx =

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

Ry = [cos(t) 0sint;0 10 0;- sint 0 cos t]
一=

因为 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旋转\pi/4”)轴平等的

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

旋转z-轴顺时针旋转90度。

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

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

旋转y-轴顺时针旋转45度。

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

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

缩放和旋转

沿这条线乘以3乘以这个曲面z设在。你可以乘以z3,Z = 3* Z.更通用的方法是创建一个缩放矩阵,然后将缩放矩阵乘以坐标向量。

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

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

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

图中包含一个轴对象。标题为Scaling by 3 along z的axis对象包含一个parameterizedfunctionsurface类型的对象。

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

R = Rx*Ry*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

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

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

画出曲面。

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

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

检查旋转矩阵的属性R

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

简化(R。”* R)
ans =

1 0 0 0 1 0 0 0 1

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