二维图形
1.缩放
假设x和y都缩小到0.5倍
那新的x’ = 0.5x 新的y’ = 0.5y 我们现在通用化一下,假设x方向缩放为Sx,y方向缩放为Sy,并且用矩阵的方法可表示如下
-1 <= Sx <= 1, -1 <= Sy <= 1
2.斜切
我们先假设y的高度是1,顶部x方向移动距离是a。
y始终是不变化的
对于顶部的线,x’ = x + a;
对于底部的线, x’ = x;
对于任意位置,x’= x + a* y ;
转为矩阵
假设y的高度是y0,顶部x方向移动距离是a0。那a = a0 / y0;
这钟斜切是保证一个方向的坐标不变的,还有一种如下
相当于把矩形推到
对于顶部线x’ = x + sinα * y; y’ = cosα * y;
显然对于任意一点,也是如上公式
那转换为矩阵表示为
3.旋转
假设有一个矩阵可以描述旋转变换
然后根据特殊点来求解A、B、C、D;
先根据特殊点(1, 0)得到如下关系
求解后可得
同理再根据特殊点(0,1)求解B、D的值
最后可得
至此我们知道旋转和缩放和斜切都可以用如下形式表示
4.平移
我们假设x方向移动了tx; y方向移动了ty, 则
那就不能表示为
只能表示成
5.小结
那旋转缩放斜切平移通用表达式就只能表示为
但我们不想对平移特殊处理,只想用一个矩阵表示,后面不用加
此处引入齐次坐标
定义 二维点和向量如下
那平移就可以表示为
通用表表达式则变为
至此,所有变换都能用一个矩阵来表示了
6.组合
那如何用变换矩阵表示下面这个图呢
只要先旋转再平移即可
那可不可以先平移再旋转呢?
不行,因为旋转是以原点作为中心点的
先平移再旋转会得到如下结果
不在原点的旋转可以先移回原点,旋转后再移回去
三维图形
此处也引入齐次坐标
定义三维的点和向量为
通用变换为
【注】:文章资料来源于【现代计算机图形学入门-闫令琪】