矩阵是计算机图形学的核心

如下屏幕截图所示的矩阵是计算机图形学的核心。它们描述在三维空间中运动的物体。MATLAB的Handle Graphics使用它们。MathWork的新产品也是如此走鹃编辑器。所有流行的视频游戏和CAD软件包也是如此。

内容

犹他州的茶壶

从1976年由当时犹他大学的研究生Martin Newell推出以来,Teapot在计算机图形学的发展中发挥了重要作用。如果你知道如何寻找它,你可以在皮克斯的电影和福克斯电视台的《辛普森一家》中看到它。有一个优秀的维基百科页面还有一个有趣的展览计算机历史博物馆。茶壶的坐标可以在MATLAB中通过函数得到teapotGeometry。描述茶壶的阴影和照明的MATLAB实时脚本是可以在这里

Teapot = grafix;

我感兴趣的面板中的矩阵。它现在是4 × 4单位矩阵。这个矩阵描述了在目标对象集合上进行的所有转换。

旋转

齐次坐标使得用4 × 4矩阵描述旋转、平移和许多其他变换成为可能。矩阵用前三个分量中的对象的坐标对向量进行操作,现在是第四个分量中的1。

这个矩阵留下z旋转时坐标固定xy

R_z(t) = [cosd(t) -sind(t) 0 0 sind(t)) cosd(t) 0 0 0 0 1 0 0 0 0 1]

这是一个45度的旋转z

Rz = R_z(45)
Rz = 0.7071 -0.7071 00 0.7071 0.7071 0000 1.0000 0000 1.0000

在茶壶上旋转。

应用(茶壶,Rz)

Rz * Rx

一个变换序列由所有矩阵的乘积表示。

这个正交旋转叶片x旋转时固定yz

R_x(t) = [1 0 0 0 0 cosd(t) -sind(t) 0 0 sind(t) 0 0 0 0 1]

保持原来的45度z通过旋转60度变换x

Rx = R_x(60) M = Rx*Rz;应用(茶壶,米)
Rx = 1.0000 0000 0.5000 -0.8660 00 0.8660 0.5000 0000 1.0000

顺序很重要,因为这些矩阵不能交换。这是颠倒顺序的结果。

M = Rz*Rx;应用(茶壶,米)

变化中

这使得y旋转时固定xz

R_y(t) = [cosd(t) 0 -sind(t) 0 0 0 1 0 0 sind(t) 0 cosd(t) 0 0 0 0 1]
Ry = R_y(-120) apply(Teapot,Ry)
Ry = -0.5000 0 -0.8660 00 1.0000 00 0.8660 0 -0.5000 000 1.0000

平移和缩放

非正交矩阵来源于平移和缩放。齐次坐标和M的第四列产生平移。一个典型的翻译是

T_x(t) = [1 0 0 0 0 0 0 0 0 0 0 0 0 1];
Tx = T_x(2.5)
Tx = 1.0000 00 2.5000 0 1.0000 000 1.0000 000 1.0000 000 1.0000

把茶壶沿着x轴。

应用(茶壶,Tx)

我们可以分别缩放每个坐标方向。或者,这个矩阵对所有的坐标应用一个因子。

S_xyz(t) = [t 0 0 0 0 0 t 0 0 0 0 t 0 0 0 1];
Sxyz = S_xyz(0.75)
Sxyz = 0.7500 0000 00 7500 0000 7500 0000 1.0000

“亲爱的,我把茶壶缩小了。”

应用(茶壶,Sxyz)

在一起

我产生了五个变换,处方Rz变化中TxSxyz。这是他们的产品,按介绍的先后顺序排列。

M = Sxyz*Tx*Ry*Rz*Rx;应用(茶壶,米)

这是相反的顺序。

M = Rx*Rz*Ry*Tx*Sxyz;应用(茶壶,米)

最后,一个混乱的订单。

M = Rz*Ry*Sxyz*Tx*Rx;应用(茶壶,米)




用MATLAB®R2021b发布

|

댓글

■■■■■■■■링크大黄蜂:大黄蜂:大黄蜂:大黄蜂:大黄蜂