1、计算机图形学——基础变换矩阵

向量叉乘与叉乘矩阵

向量叉乘

在这里插入图片描述
右手点赞,a x b,4个握住时手指反方向经过b,顺着a正方向指出,拇指指向为 a与b 的叉积
在这里插入图片描述

a、b分别为三维向量
在这里插入图片描述
a叉乘b一般定义为
在这里插入图片描述
可是这只是一个符号的定义啊,具体怎么得到代数值呢

关键方法就是引入单位坐标向量,这里用i j k来表示三维坐标轴,这里只是举例,可以扩展到更多维,只是比较抽象

通过引入单位向量,向量就可以转化为代数形式
在这里插入图片描述
单位向量叉乘为0
在这里插入图片描述
计算叉乘
在这里插入图片描述

叉乘矩阵

在这里插入图片描述

叉乘判断位置

在这里插入图片描述
a 叉乘 b 为正,则b在a左侧,a叉乘b为负,则b在a右侧

A,B,C逆时针组成三角形,AB与AP叉乘,BC与CP叉乘,CA与CP叉乘,结果都为正,则p在三角形内

A,B,C顺时针组成三角形,AB与AP叉乘,BC与CP叉乘,CA与CP叉乘,结果都为负,则p在三角形内

A,B,C逆时针组成三角形,AB与AP叉乘,BC与CP叉乘,CA与CP叉乘,一个结果都为0,则在边缘

2D线性变换

变换矩阵在图形学中很重要,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到。同时在投影 变换的时候也有很多应用
在这里插入图片描述
如上图,通过不同的A(a11,a12,a21,a22)使得x,y的数值发生一定变换

  • 缩放
    在这里插入图片描述
    图形经过缩放,x 和 y 都变成了原来的 0.5 倍
    经过缩小,x,y变为原来的0.5倍,即上面等式右边 a11x + a12y = 0.5x,a21x + a22y = 0.5y
    在这里插入图片描述
    那么左边矩阵应该为
    在这里插入图片描述
    当然,对角的两个值可以不同,大小也是任意的,可以大于 1,但是始终大于 0。当我们的矩阵变成这样的时候,图形变化就变成了这样
    在这里插入图片描述
  • 对称
    按缩放的矩阵格式,我们先假设,其中一个不变,也就是 1,而另一个不断缩小,直到小于 0,会变成怎样。(也就是 a11 不变等于 1 的情况下,a22 小于 0,亦或者 a22 不变等于 1,a11 小于 0
    在这里插入图片描述
    第一种情况,可以算出来,最后的矩阵是
    在这里插入图片描述
    也就是说,y 没有发生变化,而 x 则变成负的,因此相当于做了一次翻转,沿 y 轴翻转,也就是对称
    在这里插入图片描述
    同理,第二种情况则是沿着 x 轴进行翻转的对称图形,x 不变的情况下,y 轴变成负的了
    在这里插入图片描述
  • 剪切
    可以看到,图形像是右上角被往右拉动,底部不变的向右倾斜一样,也就是y坐标并没有变换,a21x + a22y = y,那么a21 = 0,a22 = 1
    在这里插入图片描述
    对于x轴,底下的边固定不变,而上面的那条边则整体往右偏移了一个单位 1a。也就是x = x + a*y,a11x + a12y = ay,即a11 = 1,a12 = a
    在这里插入图片描述

当我们知道图形与 y 轴的夹脚后,我们可以将矩阵写成
在这里插入图片描述

  • 旋转
    先看下面的图,图中向量 a 与 x 轴之间的夹角为 α,向量 b 由 a 旋转而来,夹角为 φ。假设他们的长度为 r
    在这里插入图片描述
    根据三角函数,我们可以得出关于向量 a
    在这里插入图片描述
    对于向量 b,它跟 x 轴的夹角相当于是 α + φ,因此可以得出
    在这里插入图片描述
    在这里插入图片描述
    由公式可以得出
    a11x+a12y=cosφ,a21x+a22y=sinφ
    a11=cosφ,a21x=sinφ
    在这里插入图片描述
    在这里插入图片描述

仿射变换

  • 位移(translation)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 其他线性变换
    在这里插入图片描述

逆变换

在这里插入图片描述
复杂的变换可以由简单的变换得到,且变换间的操作顺序性很重要
在这里插入图片描述
在这里插入图片描述

3D线性变换

  • 维缩放(scaling)
    在这里插入图片描述
  • 剪切(shearing)
    在这里插入图片描述
  • 旋转(rotation)
    在这里插入图片描述

3维旋转有3个矩阵,分别对应绕x轴,y轴,z轴旋转,同时有很关键的一点要注意!我们所采用的是右手系,因此旋转是有定向(orientation)正如在二维,是x轴向y轴旋转,对应到3维便是绕z轴旋转(x轴转向y轴),不难推出绕x轴旋转(y转向z),绕y轴旋转(z转向x), 如果想不明白,右手螺旋定则试一试就知道了! x->y->z->x…

绕z旋转的变换矩阵
在这里插入图片描述
绕x旋转的变换矩阵
在这里插入图片描述
绕y旋转的变换矩阵
在这里插入图片描述
y由z叉乘x得到,所以要是逆矩阵(由于是正交矩阵,也可以表示转置矩阵)

  • 维绕任意轴旋转
    在这里插入图片描述
    在这里插入图片描述

我们只有绕x,y, z旋转的方法,怎么随便给一个轴让你绕着他旋转呢!很直观的,我们把该轴给先旋转到任意的x,y,z轴上,然后就可以应用基本的旋转矩阵,最后再逆旋转回来即可
在这里插入图片描述
这里的Rx是知道的,问题只剩怎么求R1了,设我们想围绕旋转的轴为u,R1便是将u旋转到x的矩阵

具体来说这里我们需要以u为一轴,构造一个3维正交坐标系,然后将u-x对齐,那么其它两轴就肯定和y和z对齐了!构造如下,任取一t方向不与u重合
在这里插入图片描述
此时u, w, v便是我们构造出的新坐标系

现在得到了u,w,v 对应 x,y,z如何将我们的新坐标系与原始坐标系重合,这其实再简单不过了,我们取R1 = (u,w,v), 该旋转矩阵的含义便是将x , y , z 旋转到u,w,v的旋转矩阵(不信可以直接R1x,R1y,R1z试试便一目了然),旋转矩阵是正交矩阵,旋转矩阵的转置便是它的逆,也是几何意义上的反作用,因此!将u,w,v旋转到x,y,z的矩阵了。现在我们知道了R1知道了RX,那么围绕位移轴的旋转也就得到了
在这里插入图片描述

3D仿射变换

与2D仿射变换道理一致
在这里插入图片描述
3D逆变换与2D逆变换道理一致

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值