本文实例为大家分享了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();
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。