《图形学》实验五:改进的Bresenham算法画直线
2015-07-03 17:30
417 查看
开发环境:
VC++6.0,OpenGL实验内容:
使用改进的Bresenham算法画直线。实验结果:
代码:
//中点Bresenham算法生成直线 #include <gl/glut.h> #include <math.h> #define WIDTH 500 //窗口宽度 #define HEIGHT 500 //窗口高度 #define DRAWLINE ProBresenham(100,100,400,400); //画直线 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //取消控制台 void Init() //初始化 { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明 glColor3f(1.0f,0.0f,0.0f); //设置画笔颜色 glMatrixMode(GL_PROJECTION); //设置投影 gluOrtho2D(0.0, WIDTH, 0.0, HEIGHT); //设置投影区域 } void ProBresenham(int x0,int y0,int x1,int y1) //改进的Bresenham算法画线 { int x,y,dx,dy,e; dx = x1-x0; dy = y1-y0; e = -dx; x = x0; y = y0; while(x<=x1){ glBegin(GL_POINTS); glVertex2i(x,y); glEnd(); x++; e = e+2*dy; if(e>0){ y++; e = e-2*dx; } } } void Display() //显示函数 { glClear(GL_COLOR_BUFFER_BIT); //清空颜色堆栈 DRAWLINE //画直线 glFlush(); //清空缓冲区指令 } int main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //初始化显示模式 glutInitWindowSize(WIDTH,HEIGHT); //设置窗口尺寸 glutInitWindowPosition(200,100); //设置窗口位置 glutCreateWindow("画直线"); //创建窗口 glutDisplayFunc(Display); //注册显示函数 Init(); //初始化 glutMainLoop(); //进入程序循环 return 0; }
Freecode : www.cnblogs.com/yym2013
相关文章推荐
- hash算法
- 第六章
- Oauth2.0 用Spring-security-oauth2 非常简单
- 在PHP中使用Mysqli操作数据库
- StringBuffer
- Web开发牛人访谈:你们都在用什么?
- UIViewController学习心得
- 如何优化SQL查询当前数据上一条和下一条的记录?
- Spring Security 与 Oauth2 整合 步骤
- 【Web容器】Linux下Apache+Resin服务器的安装与配置
- 联网查看图片
- 位置和地图:地图的使用
- 3850 X5如何开启IMM中的SNMP V1, 现通过IE或ASU命令开启都报错
- java垃圾回收机制(二)
- libevent使用的简单案例
- 栈
- destoon使用教程之经典调用方法汇总
- 去除tableView中多余的显示的cell和下划线
- Java - What is Static and Dynamic binding
- servlet 项目