文档介绍:第4章图形的观察运算
赵立强
图形的开窗
图形的开窗与裁剪是图形观察运算的基础,它们在计算机图形学中占有非常重要的地位。有了开窗与裁剪这些概念之后,在图形系统的应用中,用户定义的各种复杂图形不再受显示设备显示范围的限制,同时又能非常方便地观察各种图形的输出显示,它使用户可以把图形的输入与图形的输出两个不同的过程联系在一起。
图形的开窗
一、图形学中常用的坐标系
用计算机处理图形,离不开各种坐标系,这些坐标系决定了计算机处理图形的原始数据来源与图形的最终显示位置。
在计算机图形学中,人们常把选择坐标系测量图形,并将图形数据存人计算机中保存这一过程称为定义图形,而把用户定义原始图形所用坐标系称为用户坐标系。用户常用的坐标系有:极坐标系、对数坐标系、球面坐标系、直角坐标系等,其中又把直角坐标系称为自然坐标系或世界坐标系。显然不同的坐标系适合描述不同的图形对象。
一、图形学中常用的坐标系(2)
设备坐标系一般是二维平面直角整数坐标系,它决定了计算机在显示设备的显示平面上画点、画线的位置。对于一个具体可实现的坐标系而言,它通常有4个因素:
①设备坐标系的原点,它常位于显示平面的左下角或左上角;
②设备坐标系的坐标轴方向,它的X轴一般从左指向右边,而y轴一般从下指向上方或从上指向下方;
③坐标轴的刻度,它常用可见点之间的距离或脉冲步进当量来度量;
④坐标轴的取值范围(显示范围),由于受设备的精度和显示平面的大小等因素制约,因此显示设备的显示范围是一个有限值,而且各种不同的显示设备,其显示范围都不相同。
一、图形学中常用的坐标系(3)
(设备)坐标系
规格化坐标系为一个二维平面直角坐标系,它的原点位于显示平面的左下角,X轴方向从左到右,y轴方向从下到上,且x[0,1],y[0,1],其刻度为无量纲的单位长度。
由于规格化坐标系能统一用户各种图形的显示范围,故把用户图形转换成规格化设备坐标系上统一大小的标准图形,这一过程称图形的逻辑输出,其变换称为图形的规格化变换;而把规格化设备坐标系上的标准图形送显示设备实际输出显示,这一过程称图形的物理输出,其变换称为图形的工作站变换。
O
O
O
P(,)
P(2,3)
P(,)
1
1
用户坐标系
设备坐标系
规格化坐标系
各坐标系间的关系
有了规格化设备坐标系之后,图形的输出显示可以在抽象的显示设备上进行讨论,因而这种图形学又称为与具体设备无关的图形学。此时,图形系统很容易实现在多个物理设备上同时显示用户指定的同一图形。
计算机显示图形时,通常要求显示设备坐标系的水平刻度尺寸与垂直刻度尺寸是等距的,这样画出的图形看起来才不会出现畸变效应。对于不能满足这一要求的设备坐标系,应调整其水平与垂直刻度尺寸。
例如:显示器输出
在Matlab中,有轴的刻度属性设置
在C语言中,有
getaspectratio( &xasp, &yasp );
/* read the hardware aspect */
AspectRatio = (double)xasp / (double)yasp;
/* Get correction factor */
在不同坐标系中转换图形数据,如果处理不当,就会产生积累误差和非线性偏差,这在用户坐标系到设备坐标系的数据转换中表现得尤为突出。
(1)积累误差情况
对于增量式(向量)图形输出显示设备(如随机扫描图形显示器、绘图仪等),若用当前用户坐标值和下一点的用户坐标值之差(即用户坐标的相对增量)作为本次设备运动的增量来绘制直线,从数学上看似乎是正确的,但在实际绘图中,由于它忽略了当前用户坐标值(实数)和设备坐标值(整数)之间的绝对误差,有时就会产生比较大的误差。当连续输出的点越多时,这种误差就会越大,这种由于积累而造成的误差称为积累误差。
例如,设有点列[Pi] (i=1,2,...100),其x,y值分别为
x:,,...,
y:,,...,
按用户坐标的相对增量输出,其每一步的x,,四舍五入为0,故光点或绘图笔只能停在第一点的位置上,一步也不走。
为了消除积累误差,可采用当前的用户坐标与当前的设备坐标绝对值的增量来代替用户坐标的相对增量,作为本次设备的运动增量。这样处理之后,可使得点列几处的计算误差不影响Pi+l,Pi+2,…的正确输出,从而消除了积累误差。
(2)非线性偏差情况
以圆的角度微分法画圆算法为例,在该算法中,当用B