当前位置:文档之家› 计算机图形学作业答案

计算机图形学作业答案

计算机图形学作业答案第一章序论第二章图形系统1.什么是图像的分辨率?解答:在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。

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

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

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

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

第三章二维图形生成技术1.一条直线的两个端点是(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。

2.使用斜截式方程画斜率介于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),同时将xend设为x的最大值。

如果dx < 0,则x=x2、y=y2和xend=x1。

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

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

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

(8)增加x:x=x+1。

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

(10)转到步骤(6)。

3.请用伪代码程序描述使用斜截式方程画一条斜率介于45°和-45°(即|m|>1)之间的直线所需的步骤。

假设线段的两个端点为(x1,y1)和(x2,y2),且y1<y2int 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 );}4.请用伪代码程序描述使用DDA算法扫描转换一条斜率介于-45°和45°(即|m| ≤1)之间的直线所需的步骤。

解答:假设线段的两个端点(x1, y1)和(x2,y2),且x1<x2int 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;}5.使用Bresenham算法画斜率介于0°和45°之间的直线所需的步骤。

解答:(1)计算初始值:dx =x2-x1In c2 =2(dy-dx)dy =y2-y1 d =In c1-dxIn 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)。

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

首先必须找到初始值。

在这个例子中, dx = x 2-x 1 = 8-1 = 7 dy = y 2-y 1 = 5-1 = 4 因此, In c 1= 2dy = 2×4 = 8 In c 1=2(dy -dx )= 2×(4-7)=-6d =In c 1-dx =8-7=17. 使用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)。

8. 给定数据点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 mx x t mi i m i故:23321=++=t ,33432=++=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 轴为等间距。

第四章 图形的裁剪及几何变换1. 写出实现下述映射的规范化变换,将左下角在(1,1),右上角在(3,5)的窗口映射到(a )规范化设备的全屏幕视区;(b )左下角在(0,0),右上角在⎪⎭⎫⎝⎛21,21的视区。

解答:(a ) 窗口参数是5,1,3,1ma xmi nm a xmi n====wy wy wx wx 。

视区参数是1,0,1,0max m i nm axmin====vy vy vx vx 。

那么41,21==y x s s 且⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--=1004141021021N (b ) 窗口参数同(a )。

视区参数是21,0,21,0min max max min ====wy vy vx vx 。

那么81,41==y x s s 且⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--=1008181041041N2. 设R 是左下角L (-3,1),右上角为R (2,6)的矩形窗口。

请写出图中的线段端点的区域编码。

【图5.6 P90】解答:点(x ,y )的区域编码根据下面的模式设置。

比特1=sign (y -y max )=sign (y -6) 比特3=sign (x -x max )=sign (x -2) 比特2=sign (y min -y )=sign (1-y ) 比特4=sign (x min -x )=sign (-3-x ) 此处:⎩⎨⎧≤>=)0(,0)0(,1)(a a a sign因此:A (-4,2)→0001B (-1,7)→1000C (-1,5)→0000D (3,8)→1010E (-2,3)→0000F (1,2)→0000G (1,2)→0100 H (3,3)→0010 I (-4,7)→1001 J (-2,0)→10003. 求垂直线x 和水平线y 与21P P 四边形平行坐标轴的矩形裁剪窗口的交点。

写出线段(从),(111y x P 到),(222y x P )与(a )垂直线x =a ,(b )水平线y =b 的交点。

解答:线段的参数方程是:⎩⎨⎧-+=-+=)()(121121y y t y y x x t x x 10≤≤t(b ) 因为a x =,将它代入方程)()(121x x x a t --=得到。

然后把此值再代入方程,则交点是a x I =和()121211y y xx x a y y I -⎪⎪⎭⎫⎝⎛--+= (c ) 因为b y =,将它代入方程)()(121y y y b t --=得到。

然后把此值再代入方程,则交点是b y I =和()121211x x yy y a x x I -⎪⎪⎭⎫⎝⎛--+=4. 如何判断一个点P (x ,y )是在由A(x 1,y 1)和B(x 2,y 2)所连接的线段的左边还是右边。

解答: 参见图所示。

对于向量AB 和AP ,如果P 点在AB的左边,根据两个向量叉乘的X定义,向量AB ×AP 的方向是向量K ,即xy 平面的正交方向。

如果在右边,叉乘方向为-K ,此时:Jy y I x x AP J y y I x x AB )()()()(111212-+-=-+-=因此:()()()()[]K x x y y y y x x AP AB 112112-----=⨯这个叉乘的方向由下式确定:()()()()112112x x y y y y x x C -----=5. 如果C 是正的,P 在AB 的左边。

如果C 是负的,P 在AB 的右边。

6. 根据一个对象点绕原点旋转的旋转变换,写出对应的矩阵表示。

解答:根据sin 和cos 的三角函数定义计算得到: x ´=r cos (θ+Φ),y´=r sin (θ+Φ) 和 x =r cos Φ,y =r sin Φ根据三角公式,得出: r cos (θ+Φ)= r (cos θcos Φ-sin θsin Φ)=x cos θ-y sin θ 和r sin (θ+Φ)= r (sin θcos Φ+cos θsin Φ)=x sin θ-y cos θ 或x´ = x cos θ-y sin θ,y´ = x sin θ+y cos θ设P´ =''x y ⎛⎫⎪⎝⎭, P =x y ⎛⎫⎪⎝⎭且θR =cos sin sin sin θθθθ-⎛⎫⎪⎝⎭则可得出P R P ∙='θ。

相关主题