3D游戏与计算机图形学中的数学方法-变换

3D游戏与计算机图形学中的数学⽅法-变换
1变换
在3D游戏的整个开发过程中,通常需要以某种⽅式对⼀系列的向量进⾏变换。通常⽤到的变换包括平移,缩放和旋转
1.1通⽤变换
通常可将n x n可逆矩阵M看成是⼀个从坐标系到另⼀个坐标系的变换矩阵。M的列给出了坐标系从原坐标系到新坐标系的映射。例如M是⼀个n x n可逆矩阵,当M与向量(1,0,0),(0,1,0)和(0,0,1)相乘时,可以得到di palomo
类似地,M-1的列给出了坐标轴从新坐标轴系到原坐标轴系的映射。这样对于任意给定的线性⽆关的向量U,V,W可以构造⼀个变换矩阵,该矩阵将这些向量映射到向量(1,0,0),(0,1,0)和(0,0,1)。
多个变换可以串联起来,并且可以将多个变换矩阵的乘积⽤⼀个矩阵来表⽰。假设需要先⽤矩阵M后⽤矩阵G对⼀个对象进⾏变换,由于乘积满⾜结合律,对于任意向量P都有G(MP)=(GM)P,因此只需存储GM的乘积得到的矩阵,将该矩阵作为对象的变换矩阵即可。这样就可以对定点进⾏多次变换,⽽存储空间不变。
正交矩阵是⼀种其转置矩阵等于其逆矩阵的矩阵。正交矩阵只能⽤于表⽰旋转和反射的组合。
反射指在某⼀⽅向上将点进⾏镜像的⼀种运算。例如,矩阵
以xy平⾯为对称⾯对⼀点的z坐标进⾏反射。
⼿向性
在三维空间中,有3D向量V1,V2,V3构成的坐标系的基&具有⼿向性。对于右⼿基,有(V1*V2). V3>0。也就是说,在⼀个右⼿坐标系中,v1,v2的叉积的⽅向与v3的⽅向形成⼀个锐⾓。如果&是⼀个正交规范的右⼿基,则有v1*v2=v3。若(v1*v2).v3<0,那么&是左⼿基。
进⾏奇数次反射操作就会改变⼿向性,偶数次反射相当于⼀次旋转。通过观察3x3矩阵的⾏列式,就可以判定矩阵是否存在反射。若M的⾏列式是负的,则存在反射,⽤M对任意基的向量进⾏变换操作后,基的⼿向性都会发⽣改变。如果⾏列式是正的,那么M不改变⼿向性。
正交矩阵M的⾏列式的值只能是1或-1.若detM=1,矩阵M只存在旋转;如果为-1,那么M表⽰旋转之后再进⾏⼀次反射。
1.2缩放变换
简单来说,对于统⼀缩放可以理解为向量P乘以⼀个常数a,即P’ = aP。在三维空间⾥可以⽤矩阵的乘积表⽰。
水利u型槽成型机>大聚合如果是在xyz轴以不同的值进⾏缩放向量,那么可以这种缩放为⾮统⼀缩放。
如果在3个任意轴上进⾏⾮统⼀缩放,就要⽤到复杂的缩放过程。假设以系数a沿U轴⽅向,以系数b沿
V轴⽅向,以系数c沿W轴⽅向进⾏缩放,可以先从坐标系(U,V,W)变换到坐标系(i,j,k),然后在(i,j,k)坐标系进⾏缩放运算,最后在还原到(U,V,W)坐标系。
1.3旋转变换
⾸先讲⼀下在⼆维平⾯上的旋转,也就是在平⾯直⾓坐标系上进⾏旋转。假设⼀个向量P(Px,Py),要想求得相对于它⾃⾝旋转a度⾓后的向量P’。我们就需要根据P逆时针旋转90度得到其正交的向量Q(-Py,Px)。可以将P,Q看做该坐标系的⼀对正交基,则P’可以被P和Q表⽰为:
P’ = Pcosa + Qsina;(1)
可以确定P’的x,y分量为:
可以改写成矩阵的形式:
镀镍钢带
引申⼀下:将单位矩阵的第三⾏和第三列加⼊P’矩阵中可得:
,该矩阵是绕z轴的三维旋转。
同样可以得到绕x轴和y轴旋转⾓度的3x3旋转矩阵。
绕任意轴旋转
假设向量P绕⼀个任意轴旋转Θ⾓,这⾥的任意轴以单位向量A表⽰,可以将向量P分解为垂直于和平⾏于A的分量P1, P2。由于平⾏分量
P2在平⾏于A,则在旋转过程中保持不变,主要求的是P1的旋转。
由于A是⼀个单位向量,对于P在A上的投影,可以表⽰为:proj A P = (A.P)A;
P垂直于A的分量可表⽰为:perp A P = P – (A.P)A;
现将垂直于A的分量进⾏旋转,然后加上proj A P就可以得到最终的旋转结果。
岩心箱
垂直分量的旋转是如何得到的呢?
垂直分量的旋转是在垂直于A轴的平⾯内进⾏的。可以⽤perp A P与perp A P逆时针⽅向旋转90度所形
成的向量的线性组合来表⽰旋转后的向量。如上图所⽰,假设a是原向量P和A轴之间的夹⾓。perp A P的长度等于||P||sina,那么perp A P绕A轴逆时针旋转90度的向量perp A P’就是A 与P的叉积。
那么perp A P旋转Θ⾓可以表⽰为:[P-(A.P)A]cosΘ + (A x P)sinΘ。 (2)
(2)式的推出可以参考(1)式。
加上proj A P = (A.P)A,就可以得到P绕A轴的旋转公式:
P’ = PcosΘ + (A x P)sinΘ + A(A.P)(1-cosΘ);  (3)
栅栏门将(3)式换成矩阵的表达形式:
合并公式中的相同项,令C=cosΘ,S=sinΘ,得到表⽰向量绕A轴旋转Θ⾓的旋转矩阵R A(Θ).
1.4齐次坐标
关于平移操作,不能⽤3 x 3矩阵表⽰,把点P从⼀个坐标系平移到另⼀个坐标系,只需要简单地添加偏移向量,不会影响到坐标轴的⽅向和尺度。
P’ = MP + T      (4)
其中M为3 x 3可逆矩阵,T是3D平移向量。利⽤(4)式进⾏两次操作可得到:
(5)
若是要进⾏n次操作时,必须知道每次变换过程中的矩阵分量M n M n-1和平移分量M n T n-1+T n。
我们利⽤四维变换可以将M和T统⼀起来,就可以建⽴⼀个四维4 x 4矩阵来表⽰平移操作。⽅法是给3D点P增加⼀个坐标,并将这个扩展的第四个坐标称之为w坐标,其值设为1。
(6)
将矩阵F乘以向量(Px,Py,Pz,1),就等价于(4)式对向量的x,y,z坐标进⾏变换,同时保持w为1。
从公式(4)中可以解出 (7)
因此可以从公式(6)中得到4 x 4矩阵F的逆矩阵F-1为:
(8)可以验证(8)式的正确性:

本文发布于:2024-09-22 20:18:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/276653.html

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

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