图形学:Transform矩阵(3维 2维) 平移,旋转,缩放

0. 简介

在图形学领域中,Transform矩阵(变换矩阵)是一种表示图形对象在二维或三维空间中的位置、方向和大小变化的数学工具。它们用于执行各种图形变换,如平移、旋转、缩放。Transform矩阵通常表示为一个二维或三维矩阵,具体形式取决于空间的维度。

0.1 二维变换矩阵

  • 在二维图形学中,通常使用3x3的矩阵表示变换,其中最后一行通常是[0, 0, 1],因为二维变换不影响z轴。这个矩阵可以表示平移、旋转、缩放和剪切。
  • 例如,一个简单的二维平移矩阵可以写成:
css 复制代码
   [ 1  0  tx ]
   [ 0  1  ty ]
   [ 0  0  1  ]

其中txty是平移的水平和垂直距离。

0.2 三维变换矩阵

  • 在三维图形学中,通常使用4x4的矩阵表示变换,其中最后一列通常是[0, 0, 0, 1]。这种矩阵可以表示平移、旋转、缩放以及更复杂的变换。
  • 一个简单的三维平移矩阵可以写成:
css 复制代码
   [ 1  0  0  tx ]
   [ 0  1  0  ty ]
   [ 0  0  1  tz ]
   [ 0  0  0  1  ]

其中txtytz是平移的xyz轴距离。

不管是二维变换矩阵还是三维变换矩阵,它的最后一行都是齐次坐标,通常是[0, ... , 1]用于处理齐次坐标,使得可以用矩阵乘法来同时处理旋转和平移。

1. 举个例子

1.1 平移

给定的初始 Transform 矩阵如下:

css 复制代码
[ 1  0  0  tx ]
[ 0  1  0  ty ]
[ 0  0  1  tz ]
[ 0  0  0  1  ]

希望在 x 轴增加 2 个单位,y 轴增加 1 个单位,z 轴减小 3 个单位。

1.1.1 计算过程

  1. 对 x 轴进行增加 2 个单位: 可以将 tx(原始平移量)增加 2 个单位。
  2. 对 y 轴进行增加 1 个单位: 将 ty(原始平移量)增加 1 个单位。
  3. 对 z 轴进行减小 3 个单位: 要使物体沿 z 轴负方向移动,需要将 tz 减小 3 个单位。

1.1.2 计算结果

css 复制代码
[ 1  0  0  tx + 2 ]
[ 0  1  0  ty + 1 ]
[ 0  0  1  tz - 3 ]
[ 0  0  0     1   ]

这个新的矩阵表示了对原始物体进行了所需的平移操作。

1.2 旋转

1.2.1 2维旋转矩阵

css 复制代码
```css
[ cos(θ)   -sin(θ) ]
[ sin(θ)    cos(θ) ]

1.2.1 3维旋转矩阵

  • 绕x轴旋转矩阵
css 复制代码
[ 1     0        0      0 ]
[ 0  cos(θ)   -sin(θ)   0 ]
[ 0  sin(θ)    cos(θ)   0 ]
[ 0     0        0      1 ]
  • z轴旋转
css 复制代码
[ cos(θ)  -sin(θ)   0   0 ]
[ sin(θ)   cos(θ)   0   0 ]
[    0       0      1   0 ]
[    0       0      0   1 ]
  • 绕y轴旋转
css 复制代码
[ cos(θ)   0   sin(θ)   0 ]
[    0     1      0     0 ]
[-sin(θ)   0   cos(θ)   0 ]
[    0     0      0     1 ]

原始的Transform矩阵T与旋转矩阵R相乘,得到新的Transform矩阵 T'
T' = T * R

1.3 缩放

1.3.1 缩放矩阵

css 复制代码
[ sx  0   0   0 ]
[ 0   sy  0   0 ]
[ 0   0   sz  0 ]
[ 0   0   0   1 ]

原始的Transform矩阵T与缩放矩阵S相乘,得到新的Transform矩阵 T'
T' = T * S

相关推荐
szekl6 小时前
HDMI 2.0 4×2矩阵切换器412HN——多信号输入输出的高清解决方案
linux·矩阵·计算机外设·电脑·ekl
盛寒1 天前
矩阵的定义和运算 线性代数
线性代数
盛寒1 天前
初等变换 线性代数
线性代数
叶子爱分享1 天前
浅谈「线性代数的本质」 - 系列合集
线性代数
luofeiju1 天前
RGB下的色彩变换:用线性代数解构色彩世界
图像处理·人工智能·opencv·线性代数
好开心啊没烦恼1 天前
Python:线性代数,向量内积谐音记忆。
开发语言·python·线性代数·数据挖掘·数据分析
引量AI11 天前
TikTok 矩阵如何快速涨粉
大数据·人工智能·矩阵·tiktok矩阵·海外社媒
Ven%11 天前
矩阵阶数(线性代数) vs. 张量维度(深度学习):线性代数与深度学习的基石辨析,再也不会被矩阵阶数给混淆了
人工智能·pytorch·深度学习·线性代数·矩阵·tensor·张量
云云32111 天前
亚矩云手机赋能Vinted矩阵运营:破解二手电商多账号与本地化困局
网络·人工智能·智能手机·矩阵·自动化
云云32112 天前
Subway Surfers Blast × 亚矩阵云手机:手游矩阵运营的终极变现方案
大数据·人工智能·线性代数·智能手机·矩阵·架构