- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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
                您可能关注的文档
最近下载
- HG/T 2431-2018- 水处理剂_阻垢缓蚀剂Ⅲ.pdf VIP
- 上海市青浦XX中学高三下学期期中考试历史试卷.docx VIP
- 关于进一步加强“安全生产基础台账”管理工作的通知.pdf VIP
- 2024-2025学年湖南机电职业技术学院单招《职业适应性测试》复习提分资料(培优)附答案详解.docx VIP
- 2025下半年浙江绍兴市公安局警务辅助人员招聘55人笔试备考题库及答案解析.docx VIP
- 山宇SY8000变频器说明书用户手册.pdf
- 贝加莱(B&R)PLC_CF卡烧写说明PVI.docx VIP
- 电子信息工程应届生工作简历模板PPT.pptx VIP
- 上海市进才中学2024-2025学年高三上英语9月月考(含答案).docx VIP
- 年处理2000吨桑叶提取车间布置设计常晓利.docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)