中南大学计算机图形学计科资料

精品文档中南大学考试试卷2014--2015学年2学期时间100分钟日月292015年6计算机图形学课程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分)答:23x(t)=1+6t-15t+10t2y(t)=1+3t-3t(6分)作图(2分)不能,因为非一一映射。(2分)2、有一三角形ABC,其三个顶点矢量按逆时针顺序为A,B,C,相应地,三个顶点的纹理坐标为t0,t1,t2,有三角形内一点P,其位置矢量为P,求点P的线性纹理坐标插值。(本题10分)答:设点P的重心坐标为:P=A+u*(C–A)+v*(B-A)(2分)整理方程得:P–A=u(C-A)+v(B-A)(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分)解方程组得:u=((v1?v1)(v2?v0)-(v1?v0)(v2?v1))/((v0?v0)(v1?v1)-(v0?v1)(v1?v0))v=((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图可调用函数:pv指向的顶点voidvisitVertex(Vertex*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:drawtheconeglEnd();可调用函数和常量:的余弦值,角度用辐度表示;计算角度thetafloatcos(floattheta);//theta计算角度的正弦值,角度用辐度表示;floatsin(floattheta);//#definePIE3.14159;答:intnum=100;intsteps=2*PIE/float(num);for(inti=0;i<num;i++){//thebottomglVertex3f(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);//thewallglVertex3f(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],试填写下面判断多边形是否为凸多边形的C语言函数。(本题10分)boolisConvex(vec3v[],intn){//TODO:checkifv[]isconvex;//如果是凸多边形,返回true//如果不是,返回false}可调用函数:vec3crossProduct(vec3v1,vec3v2);的叉积//返回矢量v1与v2floatdotProduct(vec3v1,vec3v2);v2的点积v1//返回矢量与答:boolisConvex(vec3v[],intn){for(inti=0;i<n;i++){intcurrent=i;intnext1=i+1<n?i+1:i+1-n;intnext2=i+2<n?i+2:i+2-n;intnext3=i+3<n?i+3:i+3-n;vec3v1=v[next1]-v[current];vec3v2=v[next2]-v[next1];vec3v3=v[next3]-v[next2];vec3n1=crossProduct(v1,v2);vec3n2=crossProduct(v2,v3);if(dotProduct(n1,n2)<0)returnfalse;}returntrue;}分,代码规范分,代码正确5算法思路正确4分;1精品文档.精品文档4、一个棱长为1的立方体,中心位于坐标原点,各边与坐标轴平行。将其绕z轴正方向逆时针旋转30度,然后往x轴正方向平移10,然后再绕z轴正方向逆时针旋转45度。请画图表示变换后这个正方体在右手系坐标中的位置和朝向,并写出如上变换对应的OpenGL代码。(本题10分)glMatrixMode(GL_MODELVIEW);glLoadIdentity();//TODO:transformthemodelDrawCube();//...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?