计算机图形学期末速通指南(2) 变换
变换的核心是找到x',y’和x,y之间的关系
二维变换
缩放变换
缩放变换是一种沿坐标轴对物体产生作用的变换
均匀缩放
例:将图片在x方向和y方向上分别缩小为原来的1/2
![](https://img-blog.csdnimg.cn/img_convert/bfbc2227f5772c77a1ecbab2077668bd.png)
方程表示
![](https://img-blog.csdnimg.cn/img_convert/181f1ea03ac9df51e89c3c1cb4f1fe21.png)
矩阵表示
![](https://img-blog.csdnimg.cn/img_convert/1051f575cd4036ca0f636b71ccf06e9a.png)
不均匀缩放
例:将图片在x方向缩小为原来的1/2,y方向上不变
![](https://img-blog.csdnimg.cn/img_convert/35847c73154b10adb44c4f763134f2b3.png)
矩阵表示
![](https://img-blog.csdnimg.cn/img_convert/7d8387f0557f95a4776bb6f6ffd74f9f.png)
镜像变换
![](https://img-blog.csdnimg.cn/img_convert/1251624158a23410cc83d80eee858661.png)
方程表示
![](https://img-blog.csdnimg.cn/img_convert/04e16d4844c4f8c8a7ac7df2f8b6cfdf.png)
矩阵表示
![](https://img-blog.csdnimg.cn/img_convert/034898ce95c0d308b93eb2a404786f41.png)
剪切变换
剪切变换是固定物体某一边,然后拉伸另外一边的变换
![](https://img-blog.csdnimg.cn/img_convert/7ecc7b6e48271dd5735e00331c8c3084.png)
注意,如图可知:
变换后,y坐标依然保持不变,x轴上的点x坐标和y坐标都不变
设正方形图片边长1,则红线与蓝线的交点坐标,即图片左上顶点坐标(a,1),图片右上顶点坐标(a+1,1)
矩阵表示
![](https://img-blog.csdnimg.cn/img_convert/c60729d07d17239da645e00f64b097a5.png)
方程表示
旋转变换
![](https://img-blog.csdnimg.cn/img_convert/d3c3c2a1477c3ceccc987e3b906bd114.png)
注意:
一般以坐标原点为旋转中心,逆时针为旋转方向
计算
方法:取2个特殊点计算出x',y',解出x',y'与x,y间的对应关系
![](https://img-blog.csdnimg.cn/img_convert/cfc8c75af3624ac5914d2e9d889e0b75.png)
![](https://img-blog.csdnimg.cn/img_convert/dc13edd3dafce541daa76205aec63118.png)
![](https://img-blog.csdnimg.cn/img_convert/5fbcd5ef40c9f94cc73aa97943b244c2.png)
矩阵表示
![](https://img-blog.csdnimg.cn/img_convert/1c7b692b9cb4977a56160db0cdd4408f.png)
总结
以上几种变换都具有共同的特点
![](https://img-blog.csdnimg.cn/img_convert/177a224fcc69b9408eb4a9fd2dc3f536.png)
这样的变换称为线性变换
齐次坐标
为什么要引入齐次坐标?
之所以引入齐次坐标,是因为一种特殊的变换:平移变换
![](https://img-blog.csdnimg.cn/img_convert/28d028b7aa1fffe680edea84ba717572.png)
方程表示
![](https://img-blog.csdnimg.cn/img_convert/e131da5000ab7cc2479f1ea1a94d238a.png)
平移变换的方程乍一看很容易理解,但是,仔细观察后发现,这个方程无法写成如上面几个变换那样的矩阵形式,而只能写成下图这样:
![](https://img-blog.csdnimg.cn/img_convert/e656a2d508121ecc06ddb25ec0637d53.png)
因此,平移操作不属于线性变换,而是特殊情况。
但是,人们并不希望平移成为一种特殊情况,而希望寻找一个统一的方法用以表示各类运算,由此便引入了齐次坐标这个概念。
概念
齐次坐标是将原本n维的向量用n + 1维向量表示。
在齐次坐标下,点扩展为,向量扩展为
![](https://img-blog.csdnimg.cn/img_convert/9c598330371a820b8aa4f8cf522a250c.png)
为什么点和向量区别对待?
向量具有平移不变性,经过平移变换后,向量的方向和大小不变,位置改变。
这样设计满足一些向量和点的运算准确性
![](https://img-blog.csdnimg.cn/img_convert/bcd1ffdf052e02d35695fa775ed336fb.png)
那么,点+点究竟是什么?
答案是,两点的中点。
![](https://img-blog.csdnimg.cn/img_convert/ff58d489b86015a0f270cc74a0895cc1.png)
仿射变换
仿射变换是指向量进行一次线性变换和一次平移变换的变换。仿射变换包括缩放变换、旋转变换、反射变换、错切变换以及平移变换等,直线经过仿射变换后还是直线,平行线经过仿射变换之后还是平行线。
![](https://img-blog.csdnimg.cn/img_convert/caceff5ca26d594e99c5534a3b597679.png)
规律:
最后一行永远为0 0 1,最后一列前两个数为平移的x和y坐标
齐次坐标例子
缩放变换
![](https://img-blog.csdnimg.cn/img_convert/06f5e9cfa8cbef0aef04491ea4ac931f.png)
旋转变换
![](https://img-blog.csdnimg.cn/img_convert/7efaf1e25e8e93402cf779e4cb2e1485.png)
平移变换
![](https://img-blog.csdnimg.cn/img_convert/96d7ef850a8d782c6ed95fbf9606f525.png)
其他二维变换
逆变换
![](https://img-blog.csdnimg.cn/img_convert/abca02d63579dba56db1341c43de0ce5.png)
一些复杂的变换可以由简单的变换组合而成
并且和简单变换的组合顺序有关
![](https://img-blog.csdnimg.cn/img_convert/c2c20b876da4b06efb1ee48eb8221bd4.png)
![](https://img-blog.csdnimg.cn/img_convert/567fa584f333e73caca30c213728bb76.png)
![](https://img-blog.csdnimg.cn/img_convert/e212ac2d31f6cd45698b0b23d11b9e8a.png)
图2对应的矩阵乘法:
![](https://img-blog.csdnimg.cn/img_convert/6f9a0ce3e89497f5f51fdac6174e987b.png)
三维变换
![](https://img-blog.csdnimg.cn/img_convert/7c619e7ff43d9eb4a3bab4651c48c645.png)
![](https://img-blog.csdnimg.cn/img_convert/0ffa1c63b897cad58bba5234592e0834.png)
仿射变换
![](https://img-blog.csdnimg.cn/img_convert/a7b694a37634f23160d92aff9e31e0c7.png)
先线性变换再平移