计算机图形学基础答案全

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机图形学作业答案

第二章图形系统

1.什么是图像的分辨率?

解答:在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。

2.计算在240像素/英寸下640×480图像的大小。

解答:(640/240)×(480/240)或者(8/3)×2英寸。

3.计算有512×512像素的2×2英寸图像的分辨率。

解答:512/2或256像素/英寸。

第三章二维图形生成技术

a)一条直线的两个端点是(0,0)和(6,18),计算x从0变到6时y所对应的值,

并画出结果。

解答:由于直线的方程没有给出,所以必须找到直线的方程。下面是寻找直线方程(y =mx+b)的过程。首先寻找斜率:

m =⊿y/⊿x =(y2-y1)/(x2-x1)=(18-0)/(6-0) = 3 接着b在y轴的截距可以代入方程y=3x+b求出 0=3(0)+b。因此b=0,所以直线方程为y=3x。

b)使用斜截式方程画斜率介于0°和45°之间的直线的步骤是什么?

解答:

1.计算dx:dx=x2-x1。

2.计算dy:dy=y2-y1。

3.计算m:m=dy/dx。

4.计算b: b=y1-m×x1

5.设置左下方的端点坐标为(x,y),同时将x end设为x的最大值。如果dx <

0,则x=x2、y=y2和x end=x1。如果dx > 0,那么x=x1、y=y1和x end=x2。

6.测试整条线是否已经画完,如果x > x end就停止。

7.在当前的(x,y)坐标画一个点。

8.增加x:x=x+1。

9.根据方程y=mx+b计算下一个y值。

10.转到步骤(6)。

c)请用伪代码程序描述使用斜截式方程画一条斜率介于45°和-45°(即|m|>1)之

间的直线所需的步骤。

解答:

假设线段的两个端点为(x1,y1)和(x2,y2),且y1

int x = x1, y = y1;

float x f, m = (y2-y1)/(x2-x1), b = y1-mx1;

setPixel( x, y );/*画一个像素点*/

while( y < y2 ) {

y++;

x f = ( y-b)/m;

x = Floor( x f +0.5 );

setPixel( x, y );

}

d)请用伪代码程序描述使用DDA算法扫描转换一条斜率介于-45°和45°(即|m|

≤1)之间的直线所需的步骤。

解答:

假设线段的两个端点(x1, y1)和(x2,y2),且x1

int x = x1, y;

float y f = y1, m = ( y2– y1) / ( x2-x1);

while( x < = x2 ) {

y = Floor( y f + 0.5 );

setPixel( x, y );

x++;

y f = y f + m;

}

e)使用Bresenham算法画斜率介于0°和45°之间的直线所需的步骤。

解答:

1.计算初始值:

dx =x2-x1In c2 =2(dy-dx)

dy =y2-y1 d =In c1-dx

In c1 =2dy

2.设置左下方的端点坐标为(x,y),同时将x end设为x的最大值。如果dx

< 0,则x=x2,y=y2和x end=x1。如果dx > 0, 那么x=x1、y=y1和x end

=x2。

3.在当前的(x,y)坐标画一个点。

4.判断整条线段是否已经画完,如果x=x end就停止。

5.计算下一像素的位置。如果d<0,那么d=d+In c1。如果d≥0,那么d=

d + In c2,并且y=y+1。

6.增加x:x=x+1。

7.在当前的(x,y)坐标画一个点。

8.转到步骤(4)。

f)请指出用Bresenham算法扫描转换从像素点(1,1)到(8,5)的线段时的像素位

置。

解答:

首先必须找到初始值。在这个例子中,

dx =x2-x1=8-1 =7 dy =y2-y1=5-1 =4

因此,

In c 1= 2dy = 2×4 = 8 In c 1=2(dy -dx )= 2×(4-7)=-6 d =In c 1-dx =8-7=1

g) 使用Bresenham 算法扫描转换圆的步骤是什么? 解答:

1. 设置初始变量:(h ,k )=圆心坐标;x =0;y =圆的半径r ;d =3-2r 。

2. 测试整个圆是否已经扫描转换完。如果x>y 就停止。

3. 以中心(h ,k )为对称点,对当前的(x ,y )坐标画8个圆上的点:

plot( x + h, y + k ) plot( -x + h, -y + k ) plot( y+ h, x +k ) plot( -y + h, -x + k ) plot( -y + h, x + k ) plot( y + h, -x + k ) plot( -x + h, y + k ) plot( x + h, -y + k )

其中plot(a,b)表示以给定的参数为中心画一个小块。

4. 计算下一个像素的位置。如果d < 0,那么d =d +4x +6和x =x +1。如果

d ≥0,那么d =d +4(x -y )+10、x =x+1和y =y -1。 5. 转到步骤(2)。

h) 给定数据点P 0(0,0),P 1(1,2)P 2(2,1)P 3(3,-1)P 4(4,10)P 5(5,5),

用三次B 样条插值法插值这些数据点,求出曲线,并找出定义三次B 样条的节点集t 0,……,t 9。 解答:

m =3, n =5,选择节点集可以有两种方案:

(1) 选择:

)(103210x t t t t <-====, )(69876n x t t t t >====

其余的节点按以下方式选择:

1,......,0,...11--=++=

++++m n i m

x x t m

i i m i

故:

23

3

21=++=

t , 33

4

32=++=

t (2) 三次样条的另一种方案是:

13210-====t t t t ,

69876====t t t t

其余节点按以下方式选择:

24++=i i x t ,I =0,……,n-4

故:

t 4=2, t 5=3

两种方法选择节点集,其根据是数据点沿x 轴为等间距。

第四章 图形的裁剪及几何变换

相关文档
最新文档