资源描述
题目中所有的坐标系,均以OpenGL坐标系为准
1. 使用OpenGL图形库渲染如下四棱截锥体图形,根据给定点的A、C、G的坐标推算出其余五个点B、D、E、F、H的坐标
答: B( 1.0f , -1.0f , 0.0f) (2分)
D(-1.0f , -1.0f , -2.0f) (2分)
E(-0.5f , 1.0f , -0.5f) (2分)
F(-0.5f , 1.0f , -1.5f) (2分)
H(0.5f , 1.0f , -0.5f) (2分)
2. 已知在平面P上有两条向量v1和v2 他们的值分别(2.0f,0.0f,0.0f),(0.0f,3.0f,0.0f)求出垂直与平面P的法向量v3的值为多少,求出v1与v2之间的夹角θ的度数或cos值为多少?要求写出计算过程。
向量的模 向量的倍乘
向量之和
向量的点积
向量的叉积
答: v3= v1与v2 叉积 或 v1×v2 (3分)
v3 = (y1z2 – y2z1 , z1x2 –z2x1 , x1y2 – x2y1)
v3 = ( 0.0f , 0.0f , 6.0f) (2分)
转换单位向量
v3 = (0.0f , 0.0f , 1.0f)
cosθ = v1 与 v2单位向量的点积 或 v1·v2 (2分)
v1的单位向量 = (1.0f , 0.0f , 0.0f) (1分)
v2的单位向量= (0.0f , 1.0f , 0.0f) (1分)
cosθ = x1x2 +y1y2+z1z2;
cosθ = 1.0f*0.0f + 0.0f*1.0f + 0.0f*0.0f;
cosθ = 0 (1分)
θ = 90°
3. 已知空间中一条线段的两个顶点为d1(5.0f,3.0f,-2.0f) d2(6.0f,4.0f,-2.0f)计算出其绕(y=3,z=0)的轴旋转90°后再缩小0.5倍后的新的线段的两个顶点坐标,要求写出每一个计算后得到的新矩阵。
平移矩阵 = 缩放矩阵 =
旋转矩阵 绕x轴 = 绕y轴 =
绕z轴 =
答:缩小0.5矩阵 A = (1分)
沿Y轴平移3矩阵B= (1分)
绕X旋转90度矩阵C= (1分)
沿Y轴平移-3矩阵D= (1分)
A x B = (2分)
A x B x C = (1分)
M = A x B x C x D = (1分)
d1转换后 = M x d1 = (2.5f , 2.5f, 0.0f) (1分)
d2转换后 = M x d2 = (3.0f , 2.5f, 0.5f) (1分)
4.分别使用数值微分法(DDA算法)、中点画线法和Bresenham算法计算出P0(1,1)和 P1(3,6)之间扫描过的点。
中点画线法
Bresenham算法
答:数值微分法(DDA算法)
斜率 由于斜率大于1 增量 (2分)
y
int(x+0.5)
x+0.5
1
1
1
2
1
1.4+0.5
3
2
1.8+0.5
4
2
2.2+0.5
5
3
2.6+0.5
6
3
3.0+0.5
表头2分其他每行1分
中点画线法
斜率 由于斜率大于1 (4分)
y
x
d
1
1
1
2
1
-3
3
2
3
4
2
-1
5
3
5
6
3
数据每行1分
Bresenham算法
斜率 由于斜率大于1 (4分)
y
x
e
1
1
-1
2
1
3
3
2
-3
4
2
1
5
3
-5
6
3
数据每行1分
5.使用中点画圆算法计算出以点(4,6)为圆心,半径为8的圆的1/8圆弧点坐标。
中点画圆法
答:
x
y
d
x+4
y+6
0
8
-7
4
14
1
8
-4
5
14
2
8
1
6
14
3
7
-6
7
13
4
7
3
8
13
5
6
2
9
12
6
5
10
12
表头1分前3行数据2分后面每行1分
6.使用中点椭圆算法计算出以点(4,6)为圆心,半径rx=6,ry=8的椭圆的1/4圆弧点在区域1内的坐标。切线斜率为
区域1 :
答:区域1判断条件 < (1分)
x
y
d
x+4
y+6
0
8
-215
4
14
1
8
-23
5
14
2
8
297
6
14
3
7
241
7
13
4
6
8
12
数据前4行每行2分最后1行1分
7.使用中点椭圆算法计算出以点(4,6)为圆心,半径rx=8,ry=6的椭圆的1/4圆弧点坐标。切线斜率为,区域2的起始点为(4,6)
区域2 :
答:
x
y
d
x+4
y+6
4
6
-108
8
12
5
5
208
9
11
5
4
-44
9
10
6
3
544
10
9
6
2
436
10
8
6
1
400
10
7
6
0
10
6
数据前3行每行2分后面每行1分
8.已知如下多边形,使用扫描线算法求出该多边形的活性边表。
保存小数点后1位
答:活性边表
扫描线:
Y=5 :->->->
Y=4 :->->->
Y=3 :->
Y=2 :->
Y=1 :->
每条扫描线2分
9.已知直线段的两点(-200,-100)和(700,600)分别使用Cohen-Sutherland和梁友栋-BarSky算法计算对于区域(0,0,500,600)裁剪后的直线段,要求写出计算过程。
1001
1000
0001
0101
0000
0100
1010
0010
0110
答:Cohen-Sutherland算法: 裁剪顺序为上下右左,区域编码如下:(2分)
令x0=-200 y0=-100 x1=700 y1=600
c1 = code(x0,y0)= 0101 c2 = code(x1,y1)=0010 (1分)
裁剪下边后 y0=0 x0===-71 c1=0001 (2分)
裁剪右边后 x1=500 y1===444 c2=0000 (2分)
裁剪左边后 x0=0 y0===56 c1=0000 (2分)
裁剪后的线段为(0,56) (500,444) (1分)
梁友栋-Barskey裁剪算法:
u1=0 u2=1
p1 = -dx q1 = x0–0 p1=-900 q1=-200 u=2/9 u1=2/9 u2=1 (2分)
p2 = dx q2 = 500 - x0 p2=900 q2=700 u=7/9 u1=2/9 u2=7/9 (2分)
p3 = -dy q4 = y0–0 p3=-700 q3=-100 u=1/7 u1=2/9 u2=7/9 (2分)
p4 = dy q4 = 600–y0 p4=700 q4=700 u=1 u1=2/9 u2=7/9 (2分)
裁剪后的线段为 (x0+u1*dx,y0+u1*dy) (x0+u2*dx,y0+u2*dy) (1分)
(-200+2/9*900, -100+2/9*700) (-200+7/9*900, -100+7/9*700)
裁剪后的线段为 (0,56) (500,444) (1分)
10.已知如下多边形进行区域裁剪,若安装p1-p6顺序遍历多边形的各条边,按顺序写出该多边形裁剪的处理线段及保留的顶点。
答:处理线段P1 P2
输出A B (2分)
处理线段P2 P3
输出 C P3 (1分)
处理线段P3 P4
输出 D (1分)
处理线段P4 P5
输出 E P5 (2分)
处理线段P5 P6
输出 F (1分)
处理线段P6 P7
输出 G P7 (2分)
处理线段P7 P1
输出 H (1分)
11.已知空间中一点的颜色由3层纹理融合而成,最上层点的颜色值(RGBA)为(255,200,100,100),中间夹层点的颜色值为(0,0,255,80),背景色的颜色值为(100,100,100,200)计算出该点的最终颜色值为多少?
答:
第一次融合
(1分)
(1分)
(1分)
融合后颜色值为(100, 78, 194, 80)
第二次融合
(1分)
(1分)
(1分)
融合后颜色值为(100, 93, 129, 200)
第三次融合
(1分)
(1分)
(1分)
最终颜色值为(78, 72, 101) (1分)
[此文档可自行编辑修改,如有侵权请告知删除,感谢您的支持,我们会努力把内容做得更好]
展开阅读全文