中点画线法代码实现

中点画线法代码实现:

代码:

#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(); //进入循环等待
}

运行结果:在这里插入图片描述

发布了16 篇原创文章 · 获赞 1 · 访问量 180

猜你喜欢

转载自blog.csdn.net/weixin_44931542/article/details/105111079