矩阵在计算机三维图形变换中的应用
矩阵在计算机三维图形变换中的应用
摘要:论述如何利用矩阵的变换性质实现计算机的三维图形变换,主要是通过平移、缩放和旋转三种基本变换的组合来实现的,利用矩阵可以是图形处理高速化。
关键词:平移、缩放、旋转
1 引言
三维图形图像的处理,显示和形体构造需要使用三维几何变换,这些变换是通过基本的平移,缩放和旋转组合而成的,每一个变化都可以表示为矩阵变换的形式,通过矩阵的相乘或连续可以构造复杂的变换。
2 矩阵与图形变换
计算机对图形的处理,经常用到各种变换,若用解析式表示坐标变换,计算过程和缩放程序都很复杂,用矩阵表示图形的坐标变换,特别是复合变换就显得比较简单,利用矩阵进行计算,可使图形处理高速化。
事实上,对于一个空间图形,图形上每一个点都对应着唯一的坐标(x,y,z),它的标准化齐次坐标为一个四维的向量。
设T为4 X 4变换矩阵:
其个元素的性质为:a,b,c,d,e,f,g,h,i产生比例,反射,旋转,错位变换,l,m,n
产生沿x轴,y轴,z轴的平等移动。
P,q,r产生透视变换,s产生全比例变换。
利用变换矩阵T可以对三维坐标进行各种变换,其基本关系式为:
一般地,对图形对平移变换的变换矩阵为:
其中l,m,n分别沿x轴,y轴,z轴的方向的平移量,其坐标关系式为:
对图形做比例变换矩阵为:
a,e,i分别表示坐标x,y,z的放大率,其坐标关系为:
当a,e,i均等于1时,则变换矩阵为:
T=
1000 0100 0010 000s ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭
这时T产生全比例变换,其中S为整个图形的放大率,当s>1时整个图形缩小,当s<1时整个图形放大。
对图形作错移变换的变换矩阵为:
T=
10
10
10 000
d g
b h
c f
s ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭
对图形作关于xoy平面的反射变换的变换矩阵为:
T=
1000 0100 0010 0001⎛⎫ ⎪ ⎪ ⎪
-
⎪⎝⎭
将图形绕x轴旋转角α的变换矩阵为:
T=
1000 0cos sin0 0sin cos0 0001⎛⎫ ⎪
αα
⎪ ⎪-αα
⎪⎝⎭
将图形绕y轴旋转角α的变换矩阵为:
T=
cos0sin0
0100 sin0cos0
0001
α-α
⎛⎫ ⎪ ⎪ ⎪αα
⎪⎝⎭
如果要对图形连续施行几种变换,则它的变换矩阵就是几个相应变换后矩阵的乘积,如对点A(x,y,z)先作比例变换,然后再绕y轴旋转角α,则新旧坐标关系为:
(x,y,z,1)
000
000
000
0001
a
e
i
⎛⎫
⎪
⎪
⎪
⎪
⎝⎭
cos0sin0
0100
sin0cos0
0001
α-α
⎛⎫
⎪
⎪
⎪
αα
⎪
⎝⎭
=()
*
**1
y
x z
3 利用矩阵进行三维图形变换
设三维孔家那种任意一点的齐次坐标p(x,y,z,1),作三维图形得打的点的齐次坐标为p’(x’,y’,z’,1)可得下面三维图形集合变换矩阵。
3.1 平移变换
平移变换课将指定形体从当前位置移到一个新的位置,而不改变其方向和大小。
式中,D x,D y,D z分别是沿x轴,y轴,z轴方向上的平移量,图1是三维平移变换示意图。
3.2 比例变换
比例缩放变换指定形体的大小,该比例变换以坐标原点为参考点,上式中的分别是沿x轴,y轴,z轴方向上的缩放比例,图2是以坐标原点为参考点的三维比例变换示意图。
如果要以三维空间中的任意一点(x0,y0,z0)为参考点作比例变换,先平移至原点作比例变换后再平移回到点(x0,y0,z0),比例变换矩阵为:
3.3 旋转变换
三维旋转变换是指空间形体绕坐标轴旋转角,旋转的正方向通常按右手定则确定,即右手拇指指向转轴方向,其余四指指向便是旋转角θ的正交(如图3)。
旋转变换后形体的大小和形状不发生变化,只是空间位置相对原位置发生了变化。
绕x轴旋转:
,其中θ为图形绕x轴旋转的角度;
绕y轴旋转:
其中θ为图形绕y轴旋转的角度;
绕z轴旋转:
其中θ为图形绕z轴旋转的角度。
4 旋转矩阵
设o-x 1y 1z 1和o-x k y k z k 是以o 为同一原点的不同坐标系,对应的基向量分别为l e
和
k
e
,则同一矢量可以用两种不同的基表示出来。
,其中
为向
量
的坐标阵列,右边等式的两边用1e 点乘,得到:,其中A lk
为3X3标量矩阵,定义为:由此式可
以判断,相同元素之间的选择矩阵为三阶单位矩阵,即A ll (A kk )=E ,并且于实际
情况
符合。
我们用以下算例来实现旋转阵的应用:
5 三维图形变换的统一矩阵面
计算机绘制物体的投影图,是将三维空间的物体用二维平面上的图形来表示,因此,需要进行图形变换,而进行图形变换行之有效的方法是矩阵机器运算。
常用的三维图形变换矩阵有绕z轴的旋转矩阵S1,绕x轴的旋转矩阵S2,平移矩阵S3,向y面的正投影矩阵S4,它们分别为
其中, φ分别为绕z轴和x轴旋转的角度,l,m,n为平移参数
6 计算机三维变换使用矩阵
Direct 3D使用矩阵来执行3—D变换,解释了矩阵是如何来建立三维变换。
描述了一些变换的基本用法以及如何通过矩阵合并来完成复杂的变换,平移Translation旋转Rotation,缩放Scaling。
在Direct 3D程序中,平移矩阵也可以使用D3dutil.cpp矩阵中的Translate辅助函数来创建此矩阵,下面的例子展示了Translate函数的源码:D3DMATRIX Translate(canst float dx. Const float dy. Const float dz)
{
D3DMTR x ret=identity Matrix();
Ret(3. 0)=dx;
Ret(3. 1)=dy;
Ret(3. 2)=dz;
Return=ret;
} end of Translate()
使用D3dutil.cpp 文件中的Rotate x 和Rotate y 和Rotate z 辅助函数来创建放置矩阵,下面是Rotate x
函数的代码:
D3DMATRIX.Rotatex(const float rads)
{ floatconst sine;
const =cos(rads);
sine =sin(rads);
07127011 余章权D3DMATRIX ret=identity Matrix();
Ret(1 .1)=consine;
Ret(2 .2)=consine;
Ret(1 .2)=-sine;
Ret(2 .1)=sine;
Rerurn ret;
}//end of Rotatx()
7 结语
上述推导出的计算机三维图形变换,怎样利用矩阵的变换性质,可以通过平移比例变化和旋转
三种基本变换的组合来实现,尤其是它的旋转变换需要知道旋转角和旋转轴。
参考文献:
[1]王汝传.计算机图形学[M].北京:人民邮电出版社,2002.180~189
[2]何援军.计算机图形学[M].北京:机械工业出版社,2006.87~91
[3]焦永广.计算机图形学教程[M].北京:理工大学出版社,2001.109~114
[4]孙家广.计算机图形[M].北京:清华演出版社,1998
[5]李新友.计算机图像综合技术[M].北京:机械工业出版社,1997
[6]杨钟藩.微型计算机绘图及其程序设计[M],1987
[7]上海交通大学.计算机制图[J].北京:高等教育出版, 1985.138~166
10。