//中点BH画抛物线
void MidBresenhamParabola(int a, int b) {
int x, y;
float d1, d2;
x = 0, y = 0;
d1 = a * (x + 0.5) - b * (y + 1) * (y + 1);
glBegin(GL_POINTS);
glVertex2i(x, y);
glVertex2i(x, -y);
//下半部分
while (y < 0.5 * a / b) {
if (d1 <= 0) {
d1 += a - (2 * y + 3) * b;
y++;
x++;
}
else {
d1 -= (2 * y + 3) * b;
y++;
}
glVertex2i(x, y);
glVertex2i(x, -y);
}
//上半部分
d2 = a / 2 - b / 4;
while (x < 1000) {
if (d2 <= 0) {
d2 += a;
x++;
}
else {
d2 += a - (2 * y + 2) * b;
x++;
y++;
}
glVertex2i(x, y);
glVertex2i(x, -y);
}
glEnd();
}