图形变换中视向变换的讲解要点

2014-10-21 14:56曹颖超
科技视界 2014年36期

曹颖超

【摘 要】在计算机图形学教学中,视向变换是一个重点难点,而这部分内容又是后续学习的基础,本文根据笔者多年的教学实践,详细阐述了绕任意直线旋转的讲解要点及其与视向变换的关系。使学生易于理解视向变换,间接降低三维图形显示的难度,对于学生掌握三维图形的显示有着极为重要的意义。

【关键词】视向变换;三维复合变换;三维图形显示

在计算机图形学三维图形显示中,视向变换是比较抽象难理解的一部分内容[1],而这部分内容又是三维裁剪、消隐和真实感图形的基础,因此可以说是难点也是重点。三维复合变换中的绕任意直线旋转与视向变换有着极为密切的联系,如果在教学中将绕任意直线的旋转变换讲解透彻,学生就可以自己推导理解视向变换的实现过程。本文根据作者多年的教学实践,详细阐述了绕任意直线旋转的讲解要点及其与视向变换的关系。

1 绕任意直线旋转在三维图形显示中的重要性

在三维图形的基本显示流程中(如图1)[2],视向变换又称观察变换是最为抽象的部分,其目的是将世界坐标系中的三维图形变换到视坐标系(又称观察坐标系)。其实质是寻找一个坐标变换矩阵,使得视点为视坐标系的原点,观察方向为视坐标系的Z轴方向。由于世界坐标系是一个右手坐标系,视坐标系是一个左手坐标系,实现时,先将将观察方向变换为视坐标系的Z轴,再将X轴取反方向。这一点,与三维图形绕任意直线的旋转基本相同。

图1 三维图形基本显示流程

在三维图形绕任意直线的旋转中,因为在基本几何变换中有三维图形绕三条坐标轴的旋转变换,所以这个问题的基本思路就是将该直线变换为某一条坐标轴,再做旋转,然后依次做前面变换的逆变换。

2 绕任意直线旋转的讲解要点

设有图形绕任意一条过原点的直线(对于不经过原点直线可以作一个平移变换使之过原点)逆时针旋转θ角,如图2,直线用OE表示。A、B、C分别是E点在X、Y、Z轴的投影,也是该直线的方向矢量。

图2 绕任意直线的旋转

讲解要点一:在计算机图形学中,任何图形都是用点表示,对图形作变换也就是对表示图形的点作变换。所以要使得直线OE与Z轴重合,只要使表示直线的两个点落到Z轴上就可以了。由于O点在绕坐标轴旋转中位置不变,所以问题转化为使得E点落到Z轴上。

讲解要点二:绕坐标轴旋转过程中,该坐标保持不变,所以要找出过点E且垂直于该坐标轴的平面。

讲解要点三:绕坐标轴旋转的过程中,点到该坐标轴的距离保持不变。

图形绕任意过原点直线逆时针旋转θ角的过程:

首先使该直线与Z轴重合,即先使E落到Z轴上,第一步,将E点绕X轴逆时针旋转α角,使得E点落到XOZ平面,找出过E点且垂直于X轴的平面,再找出该平面与XOZ平面的交线,根据要点二可知,E′点在该交线上,根据要點三,可以确定E′的具体位置,在直角三角形AEE′中,可以确定α,得到旋转变换矩阵Rx(α);第二步,将E′点绕Y轴顺时针旋转β角,使之落到Z轴上,根据要点二,XOZ平面垂直于Y轴,根据要点三,可以确定E″在Z轴上的位置,在直角三角形OE′E″中,可以确定β角,得到旋转变换矩阵Ry(-β)。至此,直线OE与Z轴重合。

其次,使图形绕该直线即Z轴逆时针旋转θ角,得到矩阵Rz(θ)。

最后,再将直线变换回原来的位置,即先绕Y轴逆时针旋转β角,得到矩阵Ry(β)。接着绕X轴顺时针旋转α角,得到矩阵Rx(-α)。

将所有变换矩阵依次相乘,得到绕任意直线旋转的组合变换矩阵 T=Rx(α)Ry(-β)Rz(θ)Ry(β)Rx(-α)。

3 三维图形显示中的视向变换

在三维图形显示中,视向变换是将世界坐标系变换为视坐标系,一般假定给出视点E后,视点到世界坐标系原点的向量EO即为观察方向,则E点为视坐标系的原点,EO为视坐标系的Z轴。

图3 视向变换

在变换过程中,要强调的是,坐标变换与物体变换是互逆的。

第一步将坐标原点平移至视点E,得到平移变换T1。

第二步,将世界坐标系的Z轴变换到EO,首先将坐标系绕X轴逆时针旋转90度,将Z轴旋转到Y轴的反方向,相当于物体变换Rx(-90);再将坐标系绕Y轴顺时针旋转α角,将Z轴旋转至Ec,相当于物体变换Ry(α);最后将Z轴旋转至EO,这时由于EOc平面是Z轴和Y轴所在平面,所以垂直于X轴,所以这是将坐标绕X轴逆时针旋转β角,相当于物体变换Rx(-β)。

第三步,将世界坐标系的X轴取反向,得到变换矩阵T(-x),这就是左手坐标系——视坐标系。于是得到视向变换矩阵为T=T1·Rx(-90)·Ry(α)·Rx(-β)·T(-x)。

由于三维图形显示过程复杂、抽象,步骤多,尤其是视向变换和投影变换不易理解,因次,在绕任意直线的旋转中将要点讲解清楚,从而使学生易于理解视向变换,间接降低三维图形显示的难度,对于学生掌握三维图形的基本显示流程有着极为重要的意义。

【参考文献】

[1]陈元琰,张睿哲,吴东,等.计算机图形学实用技术[M].2版.清华大学出版社,2006:147-150.

[2]杨钦,徐永安,翟红英.计算机图形学[M].清华大学出版社,2005:88-94.

[责任编辑:汤静]