欢迎光临散文网 会员登陆 & 注册

games101学习笔记01-向量与矩阵变换p3,p4

2023-06-05 17:22 作者:白菜儿先生  | 我要投稿

目录

一、向量

1.1点乘

表示 运算 几何意义 (向量方向远近、判断前后、投影距离)

1.2叉乘

表示 运算 几何意义 (判断内外,求法线)

二、矩阵变换

2.1二维矩阵变换

线性变换 平移变换 仿射变换

2.2齐次坐标下的二维矩阵变换

为什么用齐次坐标 齐次坐标下的二维矩阵变换 组合变换

2.3齐次坐标下的三维矩阵变换

三维旋转与欧拉角 万向节死锁


一、向量

1.1向量点乘

        表示:a·b=|a|*|b|*cosθ,也等于x1x2+y1y2+z1z2;

        另外,也可以用矩阵的形式表示向量点乘。


       运算:点乘满足交换律结合律。

       几何意义

       (1)求两个向量夹角cos,用两个方向向量的点乘可以直接得到cos。告诉我们两个向量方向接近或远离。cos越接近1两个向量越接近,越接近-1越远离。

        如下的兰伯特光照模型就利用了这一点。通过物体表面法向量与光的反方向的远近,来计算某点的亮度。

(图片来自b站技术美术百人计划)

        (2)投影:投影可以用来分解向量(一般点乘要分解方向上的单位向量)

        (3)判断向前或向后。(跟方向点乘,大于0向前小于0向后)

   

1.2向量叉乘

        表示:|axb|=|a||b|sinθ,方向符合右手定则

        矩阵表示:


        可以用矩阵表示。


        右手坐标系:x x y=z;左手坐标系:x x y = -z。

        下图为右手坐标系下的叉乘关系。

        运算:叉乘不满足交换律,交换需加负号。

        几何意义

        (1)求法线。任取平面两不平行向量求叉乘得法线

        (2)判断左和右、内与外。在右手坐标系中,如果axb是正,那么b在a左侧。在右图中,如果ap、bp、cp分别在ab、bc、ca的左侧,就是在内部。

        用向量点乘与叉乘,建坐标系并将向量p分解在三个轴上如下:

矩阵x向量永远是矩阵在左向量在右,而向量都是列向量。

二、矩阵变换

2.1二维矩阵变换

        线性变换,包括旋转rotate、切变shear、缩放scale、翻转reflection等。在一般二维坐标中的线性变换的形式如下:

        具体的变换矩阵将在介绍齐次坐标中给出。

        值得一提的是,对旋转变换而言,矩阵的逆等于矩阵的转置,相当于移动-θ。也就是将下图中的θ替换成-θ。         


        平移变换

        用向量加法实现。

        仿射变换affine

        即包含线性变换也包含平移变换。

         然而,又要进行矩阵乘法又要进行向量相加,这种方式并不俭约。于是引入齐次坐标。

2.2齐次坐标下的二维矩阵变换

        齐次坐标:比一般的坐标多出一个维度,(x,y)->(x,y,w)。w=1表示坐标,w=0表示向量。

        为什么引入齐次坐标:无论线性变换还是矩阵变换都能用矩阵乘法完成,而且可以有效区分坐标和向量。

        齐次坐标下的2D变换如下:

        


        对比两种坐标的仿射变换:

        

        逆变换:变换的逆操作,变换矩阵为原变换矩阵的逆。

        

        对组合变换而言, 要用平移变换保证线性变换的中心在原点或者轴上,然后线性变换,然后再进行适当的平移变换。

        组合变换交换顺序并不相等。

        

2.3齐次坐标下的三维矩阵变换

        齐次坐标

        

        齐次坐标的仿射变换

        

        三维变换与二维变换大同小异,只有旋转变换上稍有变化。 接下来只记录旋转的内容。

        三维旋转

        绕坐标轴旋转的变换矩阵如下:

        

        旋转矩阵为正交矩阵:旋转的逆等于旋转的转置。

        通过这三种变换,用以下的方式,理论上可以摆出任何的角度,如下图。这三个角称作欧拉角。

        

        

        

        

        绕任意过原点轴旋转:

        只要加上平移变换,就可以绕空间中任意轴旋转了。

        万向节死锁

        在unity中也有欧拉角的概念,但是一般都转化成四元数进行处理。原因是使用欧拉角的万向节可能会产生死锁。

        万向节旋转时,因为特殊的物理结构,最里层的轴旋转会带着外面的两层一起旋转,中层的轴旋转会带着外面的一层旋转。因此根据绕轴旋转的顺序不同而产生不同结果。

万向节


        当最里和最外层不动,中间层旋转90度时,中间和最里层的平面会重合(如下图),也就是说,直接少了一个旋转方向。就是万向节死锁。

           


万向节死锁

        



games101学习笔记01-向量与矩阵变换p3,p4的评论 (共 条)

分享到微博请遵守国家法律