OpenGL实现中点划线法

本文实例为大家分享了OpenGL实现中点划线法的具体代码,供大家参考,具体内容如下

公司主营业务:成都网站制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出丹江口免费做网站回馈大家。

#include "GL/glut.h"
#include "stdio.h"
#include "math.h"
 
int xs, ys, xe, ye;
 
void MidpointLine(int x0, int y0, int x1, int y1)
{
 if((x0 != x1) && (y0 != y1))
 {
 int a, b, deltal, delta2, d, x, y;
 a = y0 - y1;
 b = x1 - x0;
 d = 2 * a + b;
 deltal = 2 * a;
 delta2 = 2 * (a + b);
 x = x0;
 y = y0;
 glVertex2i(x, y);
 while(x < x1)
 {
 if(d < 0)
 {
 x++;
 y++;
 d += delta2;
 }
 else
 {
 x++;
 d += deltal;
 }
 glVertex2i(x, y);
 }
 }
 else
 {
 int min, d;
 if(x0 == x1)
 {
 int x = x0, y;
 y = (y0<=y1) ? y0 : y1;
 d = fabs((double)(y0 - y1));
 while (d <= 0)
 {
 glVertex2i(x, y);
 y++;
 d--;
 }
 }
 }
}
 
void lineSegment()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(0.0, 0.0, 0.0);
 glBegin(GL_POINTS);
 MidpointLine(xs, ys, xe, ye);
 glEnd();
 glFlush();
}
 
void main(int argc, char * argv[])
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 printf("输入线段起始和终止点坐标(范围为0-500,0-500)");
 scanf("%d, %d, %d, %d", &xs, &ys, &xe, &ye);
 glutInitWindowPosition(50, 100);
 glutInitWindowSize(500, 500);
 glutCreateWindow("中点划线法");
 glClearColor(1.0, 1.0, 1.0, 0.0);
 glMatrixMode(GL_PROJECTION);
 gluOrtho2D(0.0, 500.0, 0.0, 500.0);
 glutDisplayFunc(lineSegment);
 glutMainLoop();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


新闻名称:OpenGL实现中点划线法
URL标题:http://hbruida.cn/article/gpgdsg.html