华中科技大学计算机图形学实验答案.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 实 验 报 告 课程名称: 计 算 机 图 形 学 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 2015-11-11 计算机科学与技术学院 实验一:分形图形绘制 实验目的(标题四号黑体) (1)理解OpenGL 中glut 程序框架; (2)掌握二维基本图形绘制算法; (3)利用二维基本图形绘制算法,扩展对其他复杂图形的绘制理解。 二、实验内容 1、实验算法 中点Bresenham算法画线 、端点。必要时交换A、B两点的坐标,使A点不在B点的右边。 令,,, 当 最大位移方向为x轴。构建判别公式: 其中,初值。 当时,, 当时, 当 最大位移方向为x轴。构建判别公式: 其中,初值。 当时,, 当时, 当 最大位移方向为x轴。构建判别公式: 其中,初值。 当时,, 当时, 当 最大位移方向为x轴。构建判别公式: 其中,初值。 当时,。 时,。 绘制分形三角形 输入三角形的三个端点:端点、端点、、递归层数 连接A、B、C三点。 当时,连接输入三角形三边的中点,将分割得到的四个三角形中包含顶点的三个、作为输入参数,递归调用本步骤。 #include iostream #include math.h #include GL/glut.h #define ROUND(a) ((int )(a+0.5)) //求某个数的四舍五入值 using namespace std; //全局变量声明:三角形三顶点及递归层数 GLint Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc; int Global_n; void init(void) { glClearColor(1.0, 1.0, 1.0, 0.0);//指定窗口的背景色为白色 glMatrixMode(GL_PROJECTION);//对投影矩阵进行操作 gluOrtho2D(0.0, 600.0, 0.0, 600.0);//使用正投影 } //绘制直线的函数 void lineDDA(GLint xa, GLint ya, GLint xb, GLint yb) { GLint dx = xb - xa, dy = yb - ya; //计算x,y方向的跨距 int steps, k; //定义绘制直线像素点的步数 float xIcre, yIcre, x = xa, y = ya; //定义步长的增量 //取X,Y方向跨距较大的值为步数 if (abs(dx) abs(dy)) steps = abs(dx); else steps = abs(dy); //根据步数来求步长增量 xIcre = dx / (float)steps; yIcre = dy / (float)steps; //从起点开始绘制像素点 for (k = 0; k = steps; k++) { glBegin(GL_POINTS); glVertex2f(x, y); glEnd(); x += xIcre; y += yIcre; } } //绘制直线的函数(中点Bresenham算法) void lineBre(GLint xa, GLint ya, GLint xb, GLint yb) { GLint dx, dy, d, UpIncre, DownIncre, x, y; //统一规定UpIncre为能使非最大位移方向坐标改变时的Di增量 //统一规定DownIncre为不能使非最大位移方向坐标改变时的Di增量 if (xa xb) { /* 确保a点不在b点的右方 */ x = xb; xb = xa; xa = x; y = yb; yb = ya; ya = y; } x = xa; y = ya; //计算画线起点 dx = xb - xa; dy = yb - ya; //计算dx和dy if (abs(dx) = abs(dy)) { /* 考虑|k|=1的情况 */ if (dy = 0) { /* 考虑k=0的情况 */ d = dx - 2 * dy; //计算D0 UpI

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档