计算机图形学考试题

上传人:回**** 文档编号:120894026 上传时间:2022-07-18 格式:DOC 页数:12 大小:79.50KB
返回 下载 相关 举报
计算机图形学考试题_第1页
第1页 / 共12页
计算机图形学考试题_第2页
第2页 / 共12页
计算机图形学考试题_第3页
第3页 / 共12页
点击查看更多>>
资源描述
一 请给出全象限整型Bresenham直线段生成算法的C语言描述。(20分) 二 构造空间变换T,使过原点的任意轴(A,B,C)与Y轴正向对齐。 变换顺序为先绕X轴顺时针旋转,再绕Z轴逆时针旋转。 (20分)三 简述画家消隐算法的基本原理,并给出解决流程框图。 (20分)四 已知二维空间窗口为(Wleft, Wbotton)-(Wright, Wtop), 空间裁剪采用端点编码 方式实现,请给出您的端点编码设计方案及空间任意点(x,y)的编码C函数:int pCode(int x, int y) 描述。 假设已知直线段P1P2的两端点编码分别为P1code和P2code,请问直线段 完全可见的充要条件是什么?完全不可见的充足条件是什么?部分可见的分条件又是什么?并给出相应的C描述。 (20分) 五 已知由空间两特性多边形P1(0,0,0), P2(2,2,-2), P3(2,-1,-1), P4(4,0,0)和 Q1(4,0,0), Q2(6,-2,1), Q3(8,-3,2), Q4(10,0,1)拟定两段三次Bezier曲线。请给出两段曲线在分段点P4(Q1)处达到G1持续的解析条件。 (20分)答案:一、void Bline(int x1, int y1, int x2, int y2) int x, y, dx, dy, temp, xSign, ySign, interchange; interchange = 0; x = x1; y = y1; dx = abs(x2 x1); dy = abs(y2 y1); xSign = (x2 x1) ? 1 : -1; ySign = (y2 y1) ? 1 : -1; if (dy dx) interchange = 1;temp = dx; dx = dy; dy = temp; e = 2*dy dx;for ( i = 0; i 0 ) if (interchange) x += xSign;else y += ySign;e = e 2*dx;if (interchange) y += ySign;else x += xSign;e = e + 2*dy;二、 1 0 0 0 V A 0 0 T1 = 0 B/V -C/V 0 T2 = -A V 0 00 C/V B/V 0 0 0 1 00 0 0 1 0 0 0 1 V = 三、画家消隐算法的基本原理: 犹如画家绘画同样,从远景开始逐渐绘制到近景。这样后绘的近景部分就会覆盖先绘的远景部分,达到消隐的目的。 解决流程框图:两三角形排序开始 收集可会面 XY极大 Y 极小检查三角剖分 排序 Z 极大 Y三角形排序 极小检查 N Y 输出绘制 相交边检查交点处比较深度 结束 三角形 涉及检查顶点处比较深度注:交点处比较深度部分可以展开提成二和四、六两种状况。四、 端点编码设计方案: 1010 1000 1001 0010 0000 0001 0110 0100 0101采用四位编码, 如下: 上 下 左 右 相应位置 0 为窗口边界可见一侧,1不可见一侧。 编码成果如上图。 int pCode(int x, int y) int code = 0; if (x Wrx) code |= 1; if (x Wry) code |= 4; if (y 1z = t 1一 请给出全象限整型DDA直线段生成算法的C描述。 (20分) 二 已知空间任意轴方向(A,B,C)及轴上一点(X1,Y1, Z1), 构造空间变换T实现空间绕此轴顺时针旋转角。 (20分)三 请给出Zbuffer消隐算法的基本原理示意图,并简述算法实现过程。(20分)四 已知空间投影面X = 0,投影面上矩形窗口的左下角(0,Y1, Z1)和 右上角(0,Y2,Z2),以及空间透视中心(Xe,Ye, Ze)。请给出透视 裁剪约束体上、下、左、右四个裁剪面的方程。 (20分)五 已知三次Bezier曲线的四控制点坐标P1(0,0) ,P2(50,40),P3(80,60),P4(110,10), 请计算参数t = 0,1/3,1/2,1时曲线上相应点的坐标。答案:一、 void DDAline(int x1, int y2, int x2, int y2) int I, steps; float x,y,dx,dy; x = x1+0.5; y = y1+0.5; steps = abs(x2-x1) abs(y2-y1) ? abs(x2-x1) +1: abs(y2-y1)+1; dx = (float)(x2 x1)/steps; dy = (float)(y2 y1)/steps; for (I = 0; I x1) ? 1 : -1; ySign = (y2 y1) ? 1 : -1; if (dy dx) interchange = 1;temp = dx; dx = dy; dy = temp; e = 2*dy dx;for ( i = 0; i 0 ) if (interchange) x += xSign;else y += ySign;e = e 2*dx;if (interchange) y += ySign;else x += xSign;e = e + 2*dy;二 空间变换(1) 构造空间变换T,使过原点的任意轴(A,B,C)与X轴正向对齐。 C/V -B/V 0 0 U 0 -C 0 T1 = B/V C/V 0 0 T2 = 0 1 0 00 0 1 0 C 0 U 00 0 0 1 0 0 0 1 V = U = 注: 答案不唯一, 可以有四种. (2)已知空间任意轴方向(A,B,C)及轴上一点(X1,Y1, Z1), 构造空间变换T实现空间绕此轴顺时针旋转角。 1 0 0 0 C/V B/V 0 0 T1 = 0 1 0 0 T2 = -B/V C/V 0 00 0 1 0 0 0 1 0-x1 y1 z1 1 0 0 0 1 U 0 -C 0 1 0 -C 0 T3 = 0 1 0 0 T4 = 0 cos sin 0C 0 U 0 0 - sin cos 0 0 0 0 1 0 0 0 1 T = T1 T2 T3 T4 T3-1 T2-1 T1 -1 V = U = 注: 答案不唯一, 可以有两种.三 简述Zbuffer消隐算法基本原理,并给出解决流程框图。 基本原理: 与桢缓存对等建立深度缓存Zbuffer,保存屏象素的深度值。 空间可会面投影后,计算投影区域的每一象素的深度值,并 与Zbuffer中的深度值进行比较,值小的则保存。 解决流程框图: 初始化桢缓存 与Zbuffer 结束 可会面集合空 N可会面投影计算投影区域的象素的深度值不小于则放弃 与Zbuffer比较不不小于则修改缓存值四 已知二维空间窗口为(Wleft, Wbotton)-(Wright, Wtop), 空间裁剪 采用端点编码方式实现,请给出您的端点编码设计方案。 假设已知直线段P1P2的两端点编码分别为P1code和P2code,请问 直线段完全可见的充要条件是什么?完全不可见的充足条件是什么?部分可见的充足条件又是什么?并给出相应的C描述。端点编码设计方案: 1010 1000 1001 0010 0000 0001 0110 0100 0101采用四位编码, 如下: 上 下 左 右 相应位置 0 为窗口边界可见一侧,1不可见一侧。 编码成果如上图。直线段完全可见的充要条件:! P1code & ! P2code完全不可见的充足条件: P1code & P2code部分可见的充足条件: ! P1code & P2code | P1code & !P2code
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!