TC绘制Bizer.docVIP

  • 7
  • 0
  • 约3.41千字
  • 约 6页
  • 2016-12-10 发布于河南
  • 举报
TC绘制Bizer

学 号 天津城建大学 计算机图形学实验报告 实验五 曲面的绘制 学生姓名 林卫东 专业、班级 软件2班 指导教师 任丽敏 成绩 计算机与信息工程学院 2013 年 月 日 天津城建大学 设计性实验任务书 计算机与信息工程 学院 专业 班姓名 学号: 课程名称: 计算机图形学 设计题目: Bezier曲面的绘制 完成期限:自 2013 年 10月 15 日至 2013 年 10 月 22 日 设计依据、要求及主要内容(可另加附页): 1设计依据: 本课程设计是依据教材计算机计算机图形学一书的第6章曲线和曲面为设计依据, 制作曲面的绘制的程序。 2设计要求: 题目:Bezier曲面的绘制 基本要求: 在程序中给定控制多面体的顶点坐标,数据输入项为曲线的间距 结果输出在PictureBox控件中。 附加要求:数据输入项为控制多面体的顶点坐标与两个方向的顶点数,根据给点多面体的顶点数,可绘制双线性曲面和单线性曲面。 指导教师: 任丽敏 实验目的: ?通过实验可以更了解Bezier曲线曲面的概念,理解Bezier曲面生成的原理,加深对Bezier生成算法的理解,加强理论的学习,锻炼对知识的运用能力和实践能力;进一步对OpenGL强大功能的认识,并对一些函数如display()、makeImage()、init()?、reshape(int?w,?int?h)等的功能的运用又进一步的了解,为以后的学习打下基础。 题目:Bezier曲面的绘制 设计思想: 本程序用Visual?C++?Win32??Console?Applicstion(32控制台应用程序)创建一个应用程序,再添加一个c++程序源—Bezier曲面。? 绘制Bezier曲面主要运用多个多边形逼近而成,,并通过少数几个控制点对其进行描述。通过定义曲面和均匀网格绘制一个具有光照和明暗处理效果的Bezier曲面,并实现曲面的放大和缩小,绕x轴,y轴,z轴旋转 原程序: #includegraphics.h #includemalloc.h #includemath.h #define ROW 7 #define COLUMN 7 #define MULTIPLE 7 struct node{ float x,y; }; int draw_hull(struct node a[ROW][COLUMN],int originx,int originy) { int i,j; for(i=0;iROW;i++){ moveto(originx+a[i][0].x,originy-a[i][0].y); for(j=0;jCOLUMN;j++) lineto(originx+a[i][j].x,originy-a[i][j].y); } for(j=0;jCOLUMN;j++){ moveto(originx+a[0][j].x,originy-a[0][j].y); for(i=0;iROW;i++) lineto(originx+a[i][j].x,originy-a[i][j].y); } } struct node decasteljau(struct node p[],int n,float u) { int i,r; struct node point,q[120]; for(i=0;in;i++) q[i]=p[i]; for(r=1;rn;r++) for(i=0;in-r;i++) { q[i].x=(1.0-u)*q[i].x+u*q[i+1].x; q[i].y=(1.0-u)*q[i].y+u*q[i+1].y; } return q[0]; } void draw_bezier_surface(struct node p[ROW][COLUMN],int x0,int y0) { float u,v,deltau,deltav; struct node point,q[10],r[10]; int i,j; setcolor(RED); deltau=1.0/(float)(MULTIPLE*COLUMN); for(u=0;u=1.0;u=u+deltau){ for(i=0;iROW;i=i+1){ for(j=0;jCOLUMN;j=j+1) r[

文档评论(0)

1亿VIP精品文档

相关文档