二、投影变换
1、平面几何投影
投影变换就是把三维物体投射到投影面上得到二维平面图形。
【计算机绘图是产生三维物体的二维图象,但屏幕上绘制图形的时候,必须在三维坐标系下考虑画法。】
常用的投影法有两大类
两种投影法的本质区别在于【透视投影】的投影中心到投影面之间的距离是【有限的】,而【平行投影】的投影中心到投影面之间的距离是【无限的】。
(1)中心(透视)投影
透视投影是3D渲染的基本概念,也是3D程序设计的基础。
其中的[p,q,r]能产生透视变换的效果
1、透视基本原理
因为一条直线段是由两点确定,多边形平面由围城该多边形的各顶点和边框线段确定,而任何立体也可以看成是由它的顶点和各棱边所构成的一个框体。也就是说,可以通过求出这些【顶点的透视投影】而获得空间【任意立体的透视投影】。
三维世界的物体可以看作是由点集{Xi}构成的,这样依次构造起点为E,并经过点Xi的射线Ri,这些射线与投影面P的交点集合便是三维世界在当前视点的透视图。
投影线均通过投影中心,在投影中心【相对】投影面【确定的】情况下,空间的一个点在投影面上只存在【唯一一个】投影。
2、一点透视
先假设q≠0,p=r=0。然后对点(x,y,z)进行变换
图70
对其结果进行齐次化处理得:
A、当y=0时,有
说明处于y=0平面内的点,经过变换以后没有发生变化
B、当y→∞时,有
说明当y→∞时,所有点的变换结果都集中到了y轴上的1/q处,即所有平行于y轴的直线将延伸相较于(0,1/q,0),该点称为【灭点】,而像这样形成一个灭点的透视变换称为【一点透视】。
同理可知,当p≠0,q=r=0时,则将在x轴上的1/p处产生一个灭点,坐标为(1/p,0,0),在这种情况下,所有平行于x轴的直线将延伸交于该点。
同理,当r≠0,q=p=0时,则将在z轴上的1/r处产生一个灭点,其坐标为(0,0,1/r),这种情况下,所有平行于z轴的直线将延伸交于该点。
【一点透视投影实例】
假设视点(投影中心)在z轴上(z=-d处),投影面在xoy面上,则一点透视的步骤如下:
(1)将三维物体平移到适当位置l,m,n
(2)进行透视变换
(3)最后,为了绘制方便,向xoy平面作正投影变换,将结果变换到xoy平面上。
三维物体中任何一点(x,y,z)一点透视变换的矩阵形式:
3、多点透视
根据一点透视的原理,推广,如果p,q,r三个元素中有两个为非零元素时,将会生成两个灭点,因此,得到两点透视。
当p≠0,r不等于0,结果为:
经过齐次化处理结果为:
当x→∞时,一个灭点在x轴上的1/p处
当z→∞时,一个灭点在z轴上的1/r处
同理,当p,q,r三个元素全为非零时,结果将会产生三个灭点,从而形成三点透视,产生的三个灭点分别在x轴上的1/p处,y轴的1/q处和z轴上的1/r处。
【二点透视投影图的生成实例】
(1)将物体平移到适当位置l,m,n
(2)将物体绕y轴旋转θ角
(3)进行透视变换
(4)最后向xoy面做正投影,即得二点透视图
变换矩阵形式为:
【三点透视投影图的生成实例】
(1)将物体平移到适当位置
(2)将物体绕y轴旋转θ角
(3)再绕x轴旋转α角
(4)进行透视变换
(5)最后向xoy面做正投影,即得三点透视图
变换矩阵形式为:
4、生成透视投影图的方法
假定投影中心在z轴上(z=-d处)就是点C(0,0,-d),投影面在面xoy上,与z轴垂直,现在求空间一点p(x,y,z)的透视投影p'(x',y',z')点的坐标。
三角形ABC和A'OC、APC和AP'C相似,可知:
x'/x=y'/y=d/(d+z) ——>x'=x/(1+(z/d)),y'=y/(1+(z/d)),z'=0
——>(1)透视坐标与z值成反比,即z值越大,透视坐标值越小
(2)d的取值不同,可以对形成的透视图有放大和缩小的功能,当值较 大时,形成的透视图变大,反之缩小。
变换过程写为变换矩阵形式为:
然后再乘以像投影面投影的变换矩阵,就得到了点在画面上的投影
由上式可以看出【透视投影的特性:透视缩小效应】。
三维物体透视投影的【大小与物体到投影中心的距离成反比】,即透视缩小效应。这种效应所产生的视觉效果十分类似于照相系统和人的视觉系统。
若投影中心在无穷远处,则1/d→0,上式变为平行投影。
【透视投影特点】
物体的投影视图由计算投影线与观察平面之交点而得。
透视投影生成【真实感试图】但【不保持相关比例】。
透视投影比轴测图更富有立体感和真实感。
【透视投影图】是用【中心投影法】形成的,【视点在有限远处】。