中点画线法代码实现:
代码:
#include <GL/glut.h>
#include<math.h>
#include<iostream>
using namespace std;
float x11,y11, x22, y22;
voidMidLine(void)
{
float x1 =
x11, y1 = y11, x2 = x22, y2 = y22;
double x, y ,
d0 , d1 , d2 ,a ,b;
glClear(GL_COLOR_BUFFER_BIT);
y = y1;
a = y11 - y2;
b = x22 - x11;
d0 = 2 * a + b;
d1 = 2 * a;
d2 = 2 * (a + b);
for(x=x11;x<=x22;x++)
{
glBegin(GL_POINTS);
glColor3f(2, 1, 1);
glVertex2f(x / 1000, y / 1000);
glEnd();
if (d0< 0)
{
y++;
d0 += d2;
}else {
d0 += d1;
}
}
glFlush();
}
void main(int argc, char** argv) {
glutInit(&argc, argv); //初始化glut
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA)
//设置窗口的模式-深度缓存,单缓存,颜色模型
glutInitWindowPosition(200, 200); //设置窗口的位置
glutInitWindowSize(400, 400); //设置窗口的大小
glutCreateWindow("3D Tech-
GLUT Tutorial"); //创建窗口并赋予title
cout << "输入起始点坐标,终点坐标" << endl;
cin >> x11 >> y11 >> x22 >> y22;
glutDisplayFunc(MidLine);//调用renderScene把绘制传送到窗口
glutMainLoop(); //进入循环等待
}
运行结果: