您的位置:首页 > 其它

《图形学》实验三: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: