- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2 3
2 3
中南大学考试试卷
2014 -- 2015
学年 2 学期
时间 100 分钟
2015 年 6 月 29
日
计算机图形学
课程 32
学时 2 学分 考试形式:
开
卷
专业年级: 计算机 12 级
总分 100 分,占总评成绩
70 %
注:此页不作答题纸,请将答案写在答题纸上
一、计算题(本题 20 分,共 2 小题)
1、有一条三次 Bezier 曲线,其控制点依次为 P0(1,1),P1(3,2),P3(0,2),P4(2,1),试写出其以
t:t∈[0,1]为参数的多项式表达式,并图示其形状。该曲线是否能用以 y(x)形式的单一函数表达? 为什么?(本题 10 分)
答:
x(t) = 1+6t-15t +10t
y(t) = 1+3t-3t
2
(6 分)
作图(2 分)
不能,因为非一一映射。(2 分)
2、有一三角形 ABC,其三个顶点矢量按逆时针顺序为 A,B,C,相应地,三个顶点的纹理坐 标为 t0,t1,t2,有三角形内一点 P,其位置矢量为 P,求点 P 的线性纹理坐标插值。(本题 10 分)
答:
设点 P 的重心坐标为:
P = A + u * (C – A) + v * (B - A) 整理方程得:
P – A = u(C - A) + v(B - A)
(2 分)
(1 分)
令 v0 = C – A, v1 = B – A, v2 = P – A,则 v2 = u * v0 + v * v1 (1 分) 将等式两边分别点乘 v0 和 v1 得
(v2) ? v0 = (u * v0 + v * v1) ? v0
(v2) ? v1 = (u * v0 + v * v1) ? v1
(2 分)
解方程组得:
= ((v1?v1)(v2?v0)-(v1?v0)(v2?v1)) / ((v0?v0)(v1?v1) - (v0?v1)(v1?v0))
= ((v0?v0)(v2?v1)-(v0?v1)(v2?v0)) / ((v0?v0)(v1?v1) - (v0?v1)(v1?v0)) (2 分)
点 P 的纹理坐标为:
t0 + u*(t1-t0) + v*(t2-t0); u,v 由上式可得; (2 分)
二、程序作答题(本题 50 分,共 4 小题)
1、如图 1 所示,有一用半边结构表示的网格,给出指向网格中一条半边 e 的指针 pe,e 指 向顶点 v,试写出遍历顶点 v 一环邻域顶点的 C 语言代码。(本题 15 分)
图 1
可调用函数:
void visitVertex(Vertex* pv);//访问 pv 指向的顶点 答:
HalfEdge* p = pe;
do{
visitVertex(p-end);
p=p-next-opp;
}while(p!=pe);
程序正确 12 分;
代码规范 3 分;
2、现需要在 OpenGL 中绘制一个底面半径为 r,高为 h 的圆锥,底面在 x-z 平面上,底面中 心在原点处,圆锥尖顶在坐标(0,h,0)处,请在下面空白处填写绘制代码(提示:用三角 形逼近)。(本题 15 分)
glBegin(GL_TRIANGLES);
//TODO:draw the cone
glEnd();
可调用函数和常量:
float cos(float theta);//计算角度 theta 的余弦值,角度用辐度表示; float sin(float theta);//计算角度 theta 的正弦值,角度用辐度表示; #define PIE 3.14159;
答:
int num = 100;
int steps =2*PIE/float(num);
for(int i=0; inum; i++)
{
//the bottom
glVertex3f(r*cos(i*steps), 0.0f, r*sin(i*steps));
glVertex3f(r*cos((i+1)*steps), 0.0f, r*sin((i+1)*steps));
glVertex3f(0.0f, 0.0f, 0.0f);
//the wall
glVertex3f(r*cos((i+1)*steps), 0.0f, r*sin((i+1)*steps));
glVertex3f(r*cos(i*steps), 0.0f, r*sin(i*steps));
glVertex3f(0.0f, 0.0f, 0.0f);
}
循环 3 分;
三角形顶点数值 5 分;
三角形顶点顺序 5 分;
代码规范 2 分;
3、给定一个有 n 个顶点的二维多边形,其顶点矢量(三维)按逆时针顺序排列为 v[0],v[1], v[2],...,v[n-1
原创力文档


文档评论(0)