码迷,mamicode.com
首页 > 编程语言 > 详细

《图形学》实验三:DDA算法画直线

时间:2015-07-03 18:44:46      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

开发环境:

VC++6.0,OpenGL

实验内容:

使用DDA算法画直线。

实验结果:

技术分享

代码:

 1 #include <gl/glut.h>
 2 #include <math.h>
 3 
 4 #define WIDTH    500        //窗口宽度
 5 #define HEIGHT    500        //窗口高度
 6 
 7 #define DRAWLINE1 DDALine(100,200,200,100);    //画直线
 8 #define DRAWLINE2 DDALine(200,100,450,400);    //画直线
 9 
10 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")        //取消控制台
11 
12 void Init()    //初始化
13 {
14     glClearColor(1.0f,1.0f,1.0f,1.0f);    //设置背景颜色,完全不透明
15     glColor3f(1.0f,0.0f,0.0f);    //设置画笔颜色
16 
17     glMatrixMode(GL_PROJECTION);            //设置投影
18     gluOrtho2D(0.0, WIDTH, 0.0, HEIGHT);    //设置投影区域
19 }
20 
21 void DDALine(int x0,int y0,int x1,int y1)    //DDA算法画线
22 {
23     int dx,dy,eps1,i;
24     float x,y,xIncre,yIncre;
25     dx = x1-x0;
26     dy = y1-y0;
27     x = x0,y = y0;
28     if(abs(dx)>abs(dy))
29         eps1 = abs(dx);
30     else 
31         eps1 = abs(dy);
32     xIncre = (float)dx / float(eps1);
33     yIncre = (float)dy / float(eps1);
34     for(i=0;i<=eps1;i++){
35         glBegin(GL_POINTS);
36         glVertex2i(int(x+0.5),int(y+0.5));
37         glEnd();
38         x+=xIncre;
39         y+=yIncre;
40     }
41 }
42 
43 void Display()    //显示函数
44 {
45     glClear(GL_COLOR_BUFFER_BIT);    //清空颜色堆栈
46 
47     DRAWLINE1
48     DRAWLINE2
49 
50     glFlush();    //清空缓冲区指令
51 }
52 
53 int main(int argc,char** argv)
54 {
55     glutInit(&argc,argv);
56     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);    //初始化显示模式
57     glutInitWindowSize(WIDTH,HEIGHT);    //设置窗口尺寸
58     glutInitWindowPosition(200,100);    //设置窗口位置
59     glutCreateWindow("画直线");    //创建窗口
60 
61     glutDisplayFunc(Display);    //注册显示函数
62     Init();        //初始化
63     glutMainLoop();    //进入程序循环
64     return 0;
65 }

 

Freecode : www.cnblogs.com/yym2013

 

《图形学》实验三:DDA算法画直线

标签:

原文地址:http://www.cnblogs.com/yym2013/p/4619239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!