计算机图形学作业答案

发布 2023-05-19 07:35:28 阅读 6769

第一章序论。

第二章图形系统。

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 int x = x1, y = y1;

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

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

while( y < y2 )

y++;xf = y-b)/m;

x = floor( xf +0.5 );

setpixel( x, y );

4. 请用伪**程序描述使用dda算法扫描转换一条斜率介于-45°和45°(即|m|

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

解答:假设线段的两个端点(x1, y1)和(x2,y2),且x1 int x = x1, y;

float yf = y1, m = y2 – y1) /x2-x1);

while( x < x2 )

y = floor( yf + 0.5 );

setpixel( x, y );

x++;yf = yf + m;

5. 使用bresenham算法画斜率介于0°和45°之间的直线所需的步骤。

解答:1) 计算初始值:

dx = x2-x1 inc2 = 2(dy-dx)

dy = y2-y1 d = inc1 - dx

inc1 = 2dy

2) 设置左下方的端点坐标为(x,y),同时将xend设为x的最大值。如果dx < 0,则x=x2,y=y2和xend=x1。如果dx > 0, 那么x=x1、y=y1和xend=x2。

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

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

5) 计算下一像素的位置。如果d<0,那么d=d+inc1。如果d≥0,那么d=d + inc2,并且y=y+1。

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

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

8) 转到步骤(4)。

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

解答:首先必须找到初始值。在这个例子中,dx = x2-x1 = 8-1 = 7 dy = y2-y1 = 5-1 = 4

因此,inc1= 2dy = 2×4 = 8

inc1=2(dy-dx)= 2×(4-7)=-6

d=inc1-dx=8-7=1

7. 使用bresenham算法扫描转换圆的步骤是什么?

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

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

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

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

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

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

plot( -x + h, y + kplot( 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. 给定数据点p0(0,0),p1(1,2)p2(2,1)p3(3,-1)p4(4,10)p5(5,5),用三次b样条插值法插值这些数据点,求出曲线,并找出定义三次b样条的节点集t0,……t9。

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

1) 选择:

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

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

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

i=0,……n-4

故:t4=2, t5=3

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

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

1. 写出实现下述映射的规范化变换,将左下角在(1,1),右上角在(3,5)的窗口映射到(a)规范化设备的全屏幕视区;(b)左下角在(0,0),右上角在的视区。

解答:a) 窗口参数是。视区参数是。那么且。

b) 窗口参数同(a)。视区参数是。那么且。

2. 设r是左下角l(-3,1),右上角为r(2,6)的矩形窗口。请写出图中的线段端点的区域编码。【图5.6 p90】

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

比特1=sign(y-ymax)=sign(y-6) 比特3=sign(x-xmax)=sign(x-2)

比特2=sign(ymin-y)=sign(1-y) 比特4=sign(xmin-x)=sign(-3-x)

此处:因此:

a(-4,2)→0001 b(-1,7)→1000

c(-1,5)→0000 d(3,8)→1010

e(-2,3)→0000 f(1,2)→0000

g(1,2)→0100 h(3,3)→0010

i(-4,7)→1001 j(-2,0)→1000

3. 求垂直线x和水平线y与四边形平行坐标轴的矩形裁剪窗口的交点。写出线段(从到)与(a)垂直线x=a,(b)水平线y=b的交点。

解答:线段的参数方程是:

b) 因为,将它代入方程得到。然后把此值再代入方程,则交点是和。

c) 因为,将它代入方程得到。然后把此值再代入方程,则交点是和。

4. 如何判断一个点p(x,y)是在由a(x1,y1)和b(x2,y2)所连接的线段的左边还是右边。

解答:参见图所示。对于向量ab和ap,如果p点在ab的左边,根据两个向量叉乘的定义,向量ab×ap的方向是向量k,即xy平面的正交方向。如果在右边,叉乘方向为-k,此时:

因此:这个叉乘的方向由下式确定:

5. 如果是正的,p在ab的左边。如果是负的,p在ab的右边。

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

解答:根据sin和cos的三角函数定义计算得到:

x=r cos(θ+y=r sin(θ+

和。x =r cosy =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 =,p =且。

则可得出。7. (a)写出对象绕原点旋转的旋转变换矩阵。(b)设点为p(2,-4),旋转后的新坐标是什么?

解答:a) 根据上题:

r30°==

b) 新的坐标可以通过矩阵乘法得到:

8. 写出点q(x,y)绕定点p(h,k)旋转的旋转变换。

解答:通过三步确定:(1)平移对象,使它的旋转中心p与原点重合;(2)绕原点旋转;(3)将p平移回(h,k)。

使用v=h i+k j作为平移向量,可通过组合变换得到:

9. 写出下列关于原点的缩放变换:(a)在x轴方向缩放a单位 (b)在y轴方向缩放b单位(c)同时分别在x轴方向缩放a单位,在y轴方向缩放b单位。

解答:a) 点p(x,y)缩放变换后得到点(ax,y),可以用形式sa,1p的矩阵表示,即:

b) 与(a)类似,可以用形式s1,b,p的矩阵表示,即。

c) 在两个方向上的缩放可以通过x=ax和y=by变换得到sa,bp。写成矩阵形式有:

10. 写出以直线l作为反射轴的反射变换矩阵。

解答:设图中所示的直线l交y轴于b(0,b),倾斜角为θ(与x轴夹角)。然后用已知的交换来描述整个过程:

1) 平移交点b到原点。

2) 旋转-使直线l跟x轴重合。

3) 关于x轴镜面对称。

4) 旋转回到原方向。

5) 将b平移回(0,b)。

其交换表示为:

ml=tv * rθ* mx * r--θt-v 其中,v=bj

11. 矩阵被称为同时错切变换或简称错切变换。在b=0的特例下叫x方向错切变换;a=0时叫y方向错切变换。说明这个变换在a=2和b=3时对正方形a(0,0),b(1,0),c(1,1),d(0,1)进行变换的结果。

计算机图形学作业答案

2 齐次坐标法 齐次坐标就是将一个原本是n维的向量用一个n 1维向量来表示,是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射 线性 几何变换。四 综合题。1 请写出中点画线算法的c语言描述 仅考虑02 已知三角形各顶点坐标为 10,10 10,30 和 30,20 ...

计算机图形学作业

2010上半年计算机图形学第二次作业。一。填空题 40分,每空1分 1.在opengl里,实现平移 旋转 缩放的函数分别是 gltranslateglrotateglscale 要设置这些矩阵需在 模视变换 模式下,调用 glmatrixmode gl modelview 函数来实现。2.在open...

计算机图形学作业 DISPLAY 答案

袇肀节芅螀肆肈薇螂 计算机图形学作业 i 一 判断题。1 齐次坐标提供了坐标系变换的有效方法,但仍然无法表示无穷远的点肃荿蚄袀羅蒅蒀蚀羈 2 若要对某点进行比例 旋转变换,首先需要将坐标原点平移至该点,在新的坐标系下做比例或旋转变换,然后在将原点平移回去 3.相似变换是刚体变换加上等比缩放变换 4....