计算机图形学基础答案全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 轴为等间距。 第四章 图形的裁剪及几何变换