#include <GL/glut.h>
#include<Windows.h>
void init() {
glClearColor(0.5, 0.2, 0.5, 1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-20, 200.0, -200.0, 200.0);
}
void draw(int x, int y) {
glBegin(GL_POINTS);
glVertex2i(x, y);
glEnd();
Sleep(1);
glFlush();
}
void Points(int x, int y)
{
draw(x, y);
draw(x, -y);
}
void MidPoint(int p)
{
int x, y;
float e;
x = 0;
y = 0;
e = 0.25 - 2.0 * p;
Points(x, y);
while (x <= 100)
{
if (e > 0) {
e += -2.0 * p;
}
else {
e += 2 * y + 2 - 2 * p;
y++;
}
x++;
Points(x, y);
}
}
void RenderScene() {
glClear(GL_COLOR_BUFFER_BIT);
MidPoint(6.0);
glFlush();
}
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("中点画抛物线 y**2 = 2px");
init();
glutDisplayFunc(RenderScene);
glutMainLoop();
return 0;
}
运行结果