java3D与计算机图形学期末复习 第五章 坐标变换与基本形体
图片与定义摘自《Java 3D 与计算机三维动态图形网络编程设计》
重点复习:
1、图形坐标变换
初始点A坐标为(x0,y0),变换后点A'坐标为(x1,y1)
(1)平移变换
矩阵表示:,其中Tx=(x1-x0),Ty=(y1-y0)。
(2)旋转变换
矩阵表示:,其中α为点A围绕圆心逆时针旋转的角度。(如果是顺时针旋转α角,将上面的α全部替换成-α即可)
(3)等比变换
矩阵表示:,其中Sx= x1/x0,Sy= y1/y0。
(4)轴对称变换
轴对称变换是特殊的等比变换,Sx=1,Sy=-1,是对于x轴对称;Sx=-1,Sy=1,是对于y轴对称。
2、组合变换
将上述四种变换,综合起来使用就可以求出复杂的变换。接下来,以求三角形ABC关于直线Ax+By+C=0对称的三角形A'B'C'为例:
具体步骤:
(1)求出直线与y轴的交点坐标(0,-C/B),将三角形向下平移C/B,得出第一个矩阵T1。
,变换后结果为
(2)标记直线与x轴的夹角为α角,将三角形顺时针旋转α角,得出第二个矩阵T2。
,变换后结果为
(3)对三角形求关于x轴对称,得出第三个矩阵T3。
,变换后结果为
当前,直线Ax+By+C=0是与x轴重合的,我们接下来需要将它变换到原来的位置。
(4)逆时针旋转α角,得出第四个矩阵T4。
,变换后结果为
(5)最后向上平移C/B,得出第五个矩阵T5。
,变换后结果为
(6)最后将所有矩阵相乘,可以求出组合变换矩阵。
3、Transform3D类
通常一个Transform3D类的对象是一种内部表达为4×4的双精度类型的矩阵。一个Transform3D类的对象用来执行平移、旋转、变比例等坐标变换。
4、TransformGroup类
所有表示各种几何变换的Transform3D类的对象必须包含在一个TransformGroup类的对象中,表示对在该TransformGroup类的对象中的三维图形所进行的坐标变换。
如果表示一种几何变换的Transform3D对象没有加入到该TransformGroup类的对象中,则该变换对在该TransformGroup类的对象中的三维图形不起作用。
5、世界坐标系、观察坐标系与Java3D显示器坐标系
6、透视投影、平行投影及其计算
透视投影利用相似三角形原理计算。
平行投影——就是求三视图
7、隐藏线、隐藏面消除算法
当给定视点与观察方向后,对视点来讲,并不是所有的面都可见,可见面是由视点与观察方向及面的法向量决定。只需显示可见的面,无须显示隐藏的面,这种算法叫做隐藏面消除算法。
隐藏面的消除与隐藏线消除有时是相互关联的。由隐藏线所围成的面是隐藏面,两个隐藏面所共有的线为隐藏线。
8、Z Buffer隐藏面消除算法
在显示器的像素点阵建立两种缓冲存储单元阵列:Z Buffer 和C Buffer阵列。
简单地说:从视点出发通过每个像素点发出一条射线,Z Buffer阵列存储距离视点最近的多边形与射线交点z坐标,C Buffer阵列存储对应的交点所在面颜色。