《二维图形的显示流程》由会员分享,可在线阅读,更多相关《二维图形的显示流程(29页珍藏版)》请在金锄头文库上搜索。
1、二维图形的显示流程图,所谓齐次坐标表示法就是由n+1维向量表示一个n维向量。如n维向量(P1,P2, ,Pn)表示为(hP1,hP2,hPn,h). 1、h可以取不同的值,所以同一点的齐次坐标不是唯一的。 如普通坐标系下的点(2,3)变换为齐次坐标可以是(1,1.5,0.5)(4,6,2)(6,9,3)等等。 2、 普通坐标与齐次坐标的关系为“一对多” 由普通坐标h齐次坐标 由齐次坐标h普通坐标 3、 当h=1时产生的齐次坐标称为“规格化坐标”,因为前n个坐标就是普通坐标系下的n维坐标。,齐次坐标,齐次坐标,(x,y)点对应的齐次坐标为 (x,y)点对应的齐次坐标为三维空间的一条直线,三维几何
2、变换,三维齐次坐标 (x,y,z)点对应的齐次坐标为 标准齐次坐标(x,y,z,1) 右手坐标系,三维几何变换,变换矩阵 平移变换 比例变换,三维变换矩阵-对称变换,在二维变换下,对称变换是以线和点为基准,在三维变换 下,对称变换则是以面、线、点为基准的。 对称于XOY平面 x y z 1 = x y -z 1= 对称于YOZ平面 x y z 1 = -x y z 1= 对称于XOZ平面 x y z 1 = x -y z 1=,x y z 1,x y z 1,x y z 1,三维变换矩阵-旋转变换,绕X轴变换 空间上的立体绕X轴旋转时,立体上各点的X坐标不变,只是Y、Z坐标发生相应的变化。 x
3、 = x y = cos(+) = y*cos- z*sin z = sin(+) = y*sin+z*cos,X,Y,Z,(y,z),(y z),Y,O,O,(y z),(y,z),Z,三维变换矩阵-旋转变换,矩阵表示为: 遵循右手法则,即若0,大拇指指向轴的方向,其它手指指的方向为旋转方向。,三维变换矩阵-旋转变换,绕Y轴旋转 此时,Y坐标不变,X,Z坐标相应变化。 x = sin(+) = x*cos + z*sin y = y z = cos(+) = z*cos- x*sin,X,Y,Z,(x,z),(x z),X,O,O,Z,三维变换矩阵-旋转变换,矩阵表示为,三维变换矩阵-旋转变
4、换,绕Z轴旋转 此时,Z坐标不变,X,Y坐标相应变化。 x = cos(+) = x*cos - y*sin y = sin (+) = x*sin+ y*cos z = z,X,Y,Z,(x,y),(x y),X,Y,O,O,三维变换矩阵-旋转变换,矩阵表示为:,绕任意轴的旋转变换,a) 绕过原点的任意轴的旋转变换 空间点P(x,y,z) 绕过原点的任意轴ON逆时针旋转角的旋转变换。 基本思想:因ON轴不是坐标轴,应设法旋转该轴,使之与某一坐标轴重合,然后进行旋转角的变换,最后按逆过程,恢复该轴的原始位置。,绕任意轴的旋转变换,解:令ON为单位长度,其方向余弦为: 、为ON轴与各坐标轴的夹角
5、。 变换过程如下: 1) 让ON轴绕z轴旋转-,使之在XOZ平面上。其中,绕任意轴的旋转变换,因此,绕任意轴的旋转变换,2)让在XOZ平面上的ON绕y轴旋转-,使之与z轴重合。其中 因此,绕任意轴的旋转变换,3)P点绕ON轴(即z轴)逆时针旋转角 4)ON轴绕y轴旋转 5)ON轴绕z轴旋转 因此 b) 绕任意轴的旋转变换 上面的ON轴若不过原点,而是过任意点(x0,y0,z0),变换如何呢?,实例解答: P-45 习题9 将一组点正投影到任意平面上。 分析:若能将该平面与一坐标平面重合,则可以求点对坐标平面的正投影,在对点进行逆变换就可以得到该点在给定平面上的投影。 1)设该平面法向量为(a,
6、b,c),平面上一点为(x0,y0,z0),平移 该点到坐标原点。得到平移变换T1 2) 旋转其法向量与z轴重合,则该平面与xoy面重合。得到旋转变换 R(-) 与R(-) 3) 对给定点求在xoy面上的正投影,得到投影变换T2 4) 对经过变换的点再依次做逆变换。 整个过程为:由于 与 只是坐标不同,不改变投影点之间的相对位置,所以可以将 在窗口绘出。,透视的基本知识,图中,AA,BB,CC为一组高度和间隔都相等,排成一条直线的电线杆,从视点E去看,发现 AEABEBCEC 若在视点E与物体间设置一个透明的画面P,让P通过AA,则在画面上看到的各电线杆的投影aabbcc aa即EA,EA与画
7、面P的交点的连线; bb即为EB,EB与画面P的交点的连线。 cc 即为EC,EC与画面P的交点的连线。 近大远小,透视的基本知识,若连a,b,c及a,b,c各点,它们的连线汇聚于一点。 然而,实际上,A,B,C与A,B,C的连线是两条互相平行的直线,这说明空间不平行于画面(投影面)的一切平行线的透视投影,即a,b,c与a,b,c的连线,必交于一点,这点我们称之为灭点。,透视投影,1 观察点在原点,投影面垂直于z轴的透视投影变换。 设投影面方程为 z=z0,被投影点坐标为(x,y,z,1),得到的投影点为(x,y,z0,1) ,则有: 透视投影变换矩阵为:,y,x,z,o,三、任意视点透视变换
8、 设视点P(a,b,c), PO为投射方向,进行坐标系变换,使得PO 为z轴,P为原点。变换过程为: 1) 将用户坐标系平移到视点, 得到平移变换T1 2) 令新坐标系绕x轴逆转90, 则形体上的点是顺转90 , 得到旋转变换T2 3) 再将新坐标系绕y旋转角, 此时大于180 ,形体逆转 令,4) 再令新坐标系绕x顺转,形体逆转 5) 右手坐标系变左手坐标系,z反向。 所以 透视投影变换公式,窗口视图变换:,实例分析 P45-8 计算从任意视点将一组点透视投影到任意平面。 设视点Exp,yp,zp,EO为投影平面的法向量,投影面距视点为h,则程序步骤为: 1. 将原点平移到视点:设置平移矩阵
9、T1 2. 进行视坐标系变换:计算矩阵V 3. 进行投影变换:计算投影变换矩阵T2 4. 窗口视图变换:设置矩阵T3 5. 计算每个点的投影坐标:P=PT1VT2 Ps=P T3 6. 在屏幕上绘制点 以长方体为例,标清8个顶点之间的关系,在绘制点时,绘制长方体的边。,透视投影的技巧,一点透视图的生成 在生成一点透视图时,为了避免将物体安置在坐标系原点,而产生下图所示的透视效果,通常在透视变换前,先将立体作一平移变换。,透视投影的技巧,其变换过程如下: 1)先作平移变换; 2)再作透视变换; 3)最后将结果投影到投影面。 由于往XOZ平面上投影,故一点透视变换的灭点选在Y轴上。以下是其变换公式。,透视投影的技巧,三维图形的显示流程图,