z变换公式表_图形学中的基本变换(BasicTransforms)

z变换公式表_图形学中的基本变换(BasicTransforms)
平移旋转缩放、反变换(transform)就是这样⼀个操作: 接收实体(points, vectors, colors等),并以某种⽅式转化它们。本⽂会讲到平移、旋转、缩放、反变换
射和错切矩阵以及它们之间的结合。
射和错切矩阵以及它们之间的结合
A transform is an operation that takes entities such as points, vectors, or colors and converts them in some way.
对于计算机图形学从业者,掌握变换(transform)是极其重要的。掌握了transform,你就可以摆放物体(objects)、灯光(lights)和相机(cameras)的位置,变换(reshape)它们的形状,并使(animate)它们动起来。懂了transform,你就可以确保所有的计算是在同⼀个坐标系(the same coordinate system)中进⾏,⽽不是错误地使⽤坐标系。你还可以以不同的⽅式,把物体(objects)投影到平⾯上。说的这些只是transfrom的⼩部分作⽤,但⾜以说明transfrom在实时图形学(real-time graphics),乃⾄所有图形学(any kind of computer graphics)中扮演的重要⾓⾊。
线性变换是⼀种保留向量加法和标量乘法的运算,即:
线性变换
例如,
是⼀个变换,接受⼀向量x,⽤标量5乘以向量的每⼀个元素。为了证明它是线性的只需要证明它满⾜⽅程4.1和4.2。显然⽅程4.1是满⾜的,它就是简单的乘法分配律。⽅程4.2也是满⾜的,就是简单的乘法结合律。此函数就是⼀个简单的
旋转变换,事实上所有的对于3D向量的线性变换,都可以表
缩放变换和 旋转变换
缩放变换
缩放变换,可以缩放物体的尺⼨。旋转变换是另⼀种线性变换。 缩放变换
⽰成⼀个
的矩阵。
平移变换,⼀种常⽤的⾮线性变换,例如:
然⽽,3D矩阵的size还是不够⼤到⾜以完成所有对3D物体的变换。因为还有平移变换
。在计算机图形学中,我们时常想要把各种变换结合起来,如先把⼀个物体缩⼩⼀半,再绕某个轴旋转90度,再平移到某个位置。但这种
结合⽆法只⽤⼀个简单的3D矩阵实现。
北部湾新闻
仿射变换(affine transform),通常存储在⼀个
为了结合线性变换和平移变换可以使⽤仿射变换
的矩阵中。仿射变换是⼀种变换,即先完成线性变换,然后再完成平移变换。为了表⽰四维向量我们使⽤齐次坐标,⽤统⼀的⽅式表⽰点
和⽅向。⼀个⽅向向量表⽰为
,⽽⼀个点表⽰为
郑州管城中医院癫痫科
所有的平移、旋转、缩放、反射和错切矩阵都是仿射的。仿射变换的主要特征是保持了平⾏性,即给
平⾏线施加仿射变换后,得到的仍是平⾏线。但仿射变换不⼀定保持长度(lengths)和⾓度(angles)不变。⼀个仿射变换可能是上⾯说到的单个仿射变换的连接序列。
All translation, rotation, scaling, reflection, and shearing matrices are affine.
表 4.1 本章讨论到的⼤部分变换总结
4.1 基本变换(Basic Transforms)
本节会描述最最常见的变换(见表4.1),例如:平移(translation),旋转(rotation),缩放(scaling),错切(shearing,台湾译作推移),变换连接(transform concatenation),刚体变换(rigid-body transform),法线变换(normal transform),逆的计算(computation of inverses)。
4.1.1 平移(Translation)
平移表⽰点的位置从⼀处变到另⼀处,⽤平移矩阵T T表⽰。设
表⽰平移向量,即各分量的平移量。则:
给定⼀个点
,对其施加平移矩阵,得到新的点
,明显是由
平移得到的。
⽽对于⼀个⽅向
其不会受平移矩阵影响,因为⽅向不会被平移(矩阵乘法计算⼀下就知道了)。
平移矩阵的逆矩阵为:
注意,此处的矩阵使⽤的列优先(row-major)形式,在进⾏平移运算时要这样:
;也存在另⼀种形式的平移矩阵,即把平移向量放在矩阵的最后⼀⾏,这种被称为⾏优先形式(
row-major),如在DirectX中,平移运算变成这样:
。(这⾥
都是列向量,
表⽰
的转置,即⾏向量)。
4.1.2 旋转(Rotation)
旋转变换⽤⼀个给定的旋转⾓度和过原⼼的旋转轴来旋转⼀个向量(位置或⽅向)。和平移矩阵⼀样,它是⼀个刚体变换(rigid-body
旋转变换
transform),即它保持变换后点之间的距离不变,保持handednes不变(即不会造成左右交换)。
关于旋转矩阵的推导及其与四元数表⽰旋转的关系,见这篇笔记: 四元数和旋转(Quaternion & rotation),⽐较详细。
在⼆维空间,很容易推导出旋转矩阵。假设我们有⼀个向量
,我们可以把它参数化为:
。如果我们打算使它逆时针旋转
弧度,则我们会得到向量
。利⽤三⾓函数变换公式可以得到:
即⼆维空间中的旋转矩阵为
在三维空间中常⽤的旋转矩阵为
,它们分别可以把⼀个向量绕x,y,z轴旋转
弧度。它们的值为:
对于上⾯的三个旋转矩阵,删除最底部的⾏和最右侧列,可以得到3个
的旋转矩阵,它们的迹是⼀个常量,不依赖于旋转轴: N阶矩阵的迹是指矩阵对⾓线上元数的和
这三种轴变换矩阵结合(即矩阵相乘)起来可以表⽰任意旋转矩阵
任意旋转矩阵,稍后会说到这⼀点。
黄文超事件所有旋转矩阵都是正交矩阵并且它们的⾏列式值都为1。
在图形学中常⽤到正交矩阵,正交矩阵的逆矩阵和转置矩阵相同。
旋转矩阵的逆矩阵:
举例: 绕⼀个点旋转物体
图4.2 绕⼀点p旋转物体
如图4.2所⽰,有⼀个不规则物体,其上有⼀点
,要绕点
旋转物体,则可按如下步骤进⾏:
1. 对物体施加平移变换
2. 对物体施加旋转变换
,这是真正的旋转部分
3. 对物体施加平移变换
则把这三步的变换矩阵“结合”起来就得到了最终的变换矩阵:
注意这三个矩阵的顺序,要按照从右往左的顺序读,先发⽣右边的变换。
4.1.3 缩放(Scaling)
⼀个缩放矩阵
allyes缩放矩阵
⽤系数
分别沿着x, y, z⽅向缩放实体(entity, 即⼀个向量,可能表⽰物体)。缩放矩阵可以⽤放⼤或缩⼩物体。
如果
的值为1,则在
⽅向上不会发⽣缩放。如果
,即三个⽅向上的缩放量⼀样,则称为
uniform (或 isotropic) scaling,否则称为 nonuniform (或 anisotropic) scaling。缩放矩阵的逆矩阵为
我的地理老师。
如果
中有⼀个或三个分量的值为负数,则得到⼀个
反射矩阵(reflection matrix)或 镜像矩阵
镜像矩阵(mirror matrix)。如果有两个分量的值为负,则导致旋转
反射矩阵
弧度。注意⼀个旋转矩阵与⼀个镜像矩阵相乘,得到的仍然是镜像矩阵。如下⾯得到的是⼀个镜像矩阵:
镜像矩阵通常需要特殊对待。例如,⼀个顶点按逆时针顺序分布的三⾓形被⼀个镜像矩阵变换后得到的是⼀个顺时针的三⾓形。这个顺序的改变会导致不正确的光照和错误⾯⽚剔除(backface culling)出现。判断⼀个矩阵是镜像矩阵的⽅法: 计算矩阵左上⾓的
⼦矩阵的⾏列式,如果值为负,则是镜像矩阵,如上⾯⽅程4.12:
注意,缩放矩阵
只能对沿x, y, z轴的缩放有效。如果在别的⽅向进⾏缩放,则需要⼀个复合变换矩阵。假设缩放是沿着正交、右⼿坐标系的向量
进⾏。⾸先构造矩阵
来改变基底:
称重装置整体思路就是把原始坐标系变换到标准坐标系,然后进⾏缩放变换,再从标准坐标系变换到原始坐标系。变换矩阵为:
4.1.4 错切(Shearing)
另⼀类变换是错切变换。例如,错切变换可以⽤于在游戏中扭曲整个场景,创建⼀种迷幻效果,或者也可⽤于扭曲模型的外观。有六个基本的错切变换矩阵:
。第⼀个下标⽤于表⽰哪⼀个坐标被错切矩阵改变,第⼆个下标表⽰完成错切的坐标。
的值如下:
可以从⽅程4.15中观察到两个下标可以⽤于确定参数
的位置:
对应第⼀⾏,即索引为0的⾏,
对应第3列,即索引为2列。所以,
应放在矩阵(0, 2)处。⽤这个错切矩阵乘以⼀个点
产⽣的结果为:
。下⾯图4.3清晰地说明了这个错切矩阵施加在⼀个单位正⽅形上的效果。在图4.3中y, z轴的值不受影响,⽽x轴的值为旧的x轴加上
乘以z的值,结果正⽅形变成了倾斜了,成了⼀个平⾏四边形。可以注意到变换后⾯积保持不变(阴影部分或者根据平⾏四边形⾯积计算公式
就知道了)。
图4.3 错切变换⼀个单位正⽅形
错切矩阵
逆矩阵:
的逆矩阵
也可以⽤下⾯的矩阵表⽰分别⽤z轴错切x, y轴:
⽅程4.16中两个下标都⽤于表⽰被错切的坐标(使⽤第三个坐标,即z)。可拓展为:
,此处
⽤于索引第3个坐标。
注意:任何错切矩阵的⾏列式为1,即
注意
,这是⼀个体积保持不变的变换(volume-perserving transformation)
4.1.5 变换连接(Concatenation of Transforms)
由于矩阵乘法不遵守交换律,这些变换矩阵相乘的顺序很重要。因此变换连接(concatenation of transforms)是顺序依赖的(order-dependent)。
举个例⼦,考虑两个矩阵
。其中,
把x坐标放⼤为原来的两倍,y坐标缩⼩为原来的⼀半,z坐标不变。⽽
绕z轴逆时针旋转
弧度。这两个矩阵可以按两种⽅式相乘,⽽结果却⼤不相同,如下⾯图4.4所⽰。
图4.4 矩阵乘法具有顺序依赖性。顶部和底部是两种变换顺序,导致最终的结果不⼀样。

本文发布于:2024-09-22 17:28:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/65733.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   变换   旋转   平移   缩放   得到
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议