《图形学》实验三:DDA算法画直线
2015-07-03 17:22
447 查看
开发环境:
VC++6.0,OpenGL实验内容:
使用DDA算法画直线。实验结果:
代码:
#include <gl/glut.h> #include <math.h> #define WIDTH 500 //窗口宽度 #define HEIGHT 500 //窗口高度 #define DRAWLINE1 DDALine(100,200,200,100); //画直线 #define DRAWLINE2 DDALine(200,100,450,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 DDALine(int x0,int y0,int x1,int y1) //DDA算法画线 { int dx,dy,eps1,i; float x,y,xIncre,yIncre; dx = x1-x0; dy = y1-y0; x = x0,y = y0; if(abs(dx)>abs(dy)) eps1 = abs(dx); else eps1 = abs(dy); xIncre = (float)dx / float(eps1); yIncre = (float)dy / float(eps1); for(i=0;i<=eps1;i++){ glBegin(GL_POINTS); glVertex2i(int(x+0.5),int(y+0.5)); glEnd(); x+=xIncre; y+=yIncre; } } void Display() //显示函数 { glClear(GL_COLOR_BUFFER_BIT); //清空颜色堆栈 DRAWLINE1 DRAWLINE2 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
相关文章推荐
- AngularJs自定义指令详解(4) - transclude
- Algorithms—189.Rotate Array
- sdfasdfasdfasdfas
- jquery全选/取消全选(反选)/单选操作
- web扫描工具-Jsky使用
- [网站] ping 工具
- LinearLayout测量过程疑问
- 使用HTML打开本地应用
- 下拉刷新
- mybaits使用存储过程
- JavaScript事件
- UITextField的文本框部分文本以*的方式来显示
- GRE写作必备句型
- struct和union
- JS设计模式一:单例模式
- Android CheckBox中设置padding无效问题解决方法
- Dynamics AX 2012 - Report labels does not show up in report
- Winform开发之SqlCommand常用属性和方法
- NSLog宏定义,发布后默认不打印
- 设计模式-组合模式