第一章序论。
第二章图形系统。
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....