前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第4章-变换-4.0

第4章-变换-4.0

作者头像
charlee44
发布2021-12-21 08:46:24
8660
发布2021-12-21 08:46:24
举报
文章被收录于专栏:代码编写世界代码编写世界

4.0 变换

要是愤怒的航船改变了方向 围绕着你沉睡的脑袋,和身体 那就永远不必去害怕 穷苦世界的抽象风暴之暴行 --罗伯特·佩恩·沃伦

变换是一种采用点、向量或颜色等实体并以某种方式转换它们的操作。对于计算机图形从业者来说,掌握变换是极其重要的。使用它们,您可以定位、重塑对象、灯光和相机并为其设置动画。您还可以确保所有计算都在同一坐标系中执行,并以不同方式将对象投影到平面上。这些只是可以使用变换执行的少数操作,但它们足以证明变换在实时图形(某种程度上是在任何类型的计算机图形)中的作用的重要性。

线性变换是一种保留向量加法和标量乘法的变换。具体来说,也就是:

例如,f(x)=5x 是一种采用向量并将每个元素乘以5的变换。为了证明这是线性的,需要满足两个条件(公式4.1和4.2)。第一个条件成立,因为任何两个向量乘以5然后相加,会与向量相加然后相乘相同。显然满足标量乘法条件(公式 4.2)。此函数称为缩放变换,因为它会更改对象的缩放(大小)。旋转变换是另一种线性变换,它围绕原点旋转向量。 缩放和旋转变换,实际上所有三元素向量的线性变换,都可以用3×3 矩阵表示。

然而,这个矩阵的大小通常不够大。三元素向量x的函数,例如f(x)=x+(7,3,2) 不是线性的。在两个单独的向量上执行此函数会将(7,3,2)的每个值相加两次以形成结果。将固定向量与另一个向量相加会执行平移,例如,它将所有位置移动相同的量。这是一种有用的变换类型,我们希望结合各种变换,例如,将对象缩放为原来的一半,然后将其移动到不同的位置。将函数保持在迄今为止使用的简单形式中,很难轻松地将它们组合起来。

可以使用仿射变换来组合线性变换和平移,通常存储为4×4 矩阵。仿射变换是先执行线性变换然后再进行平移的变换。为了表示四元素向量,我们使用齐次符号,以相同的方式表示点和方向(使用粗体小写字母)。方向向量表示为\textbf{v} = {(v_x \ v_y \ v_z \ 0)}^T ,点表示为\textbf{v} = {(v_x \ v_y \ v_z \ 1)}^T 。在本章中,我们将广泛使用 realtimerendering.com 上可下载的线性代数附录中解释的术语和操作。

所有平移、旋转、缩放、反射和剪切矩阵都是仿射矩阵。仿射矩阵的主要特征是它保留了线的平行度,但不一定保留了长度和角度。仿射变换也可以是单个仿射变换的任何级联序列。

本章将从最基本的仿射变换开始。本节可以看作是简单转换的“参考手册”。然后描述更专业的矩阵,然后讨论和描述四元数,这是一种强大的变换工具。然后是顶点混合和变形,这是表达网格动画的两种简单但有效的方法。最后,描述了投影矩阵。大多数这些变换、它们的符号、函数和属性都在表4.1中进行了总结,其中,正交矩阵是这样的矩阵,其逆矩阵是转置矩阵。

Table 4.1. 本章讨论的大多数变换的摘要。

变换是操作几何的基本工具。大多数图形应用程序编程接口允许用户设置任意矩阵,有时一个库可以用于实现本章中讨论的许多变换的矩阵运算。但是,了解函数调用背后的真实矩阵及其相互作用仍然是值得的。在这样的函数调用之后了解矩阵的作用是一个开始,但了解矩阵本身的属性会让你走得更远。例如,这样的理解使您能够辨别何时处理正交矩阵,其逆是其转置,从而加快矩阵求逆。像这样的知识可以让我们增加编程效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.0 变换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档