х = у = 0;
>
void setCoords (GLint xCoordValue, GLint yCoordValue) { x = xCoordValue; у = yCoordValue;
}
GLint getx ( ) const { return x;
}
GLint gety ( ) const { return y;
}
void incrementx ( ) {
x++;
}
void decrementy ( ) {
y-;
}
} ;
void setPixel (GLint xCoord, GLint yCoord) { glBegin (GL_POINTS);
glVertex2i (xCoord, yCoord); glEnd ( );
}
void circleMidpoint (GLint xc, GLint yc, GLint radius) { screenPt circPt;
GLint p = 1 - radius; // Начальное значение
// параметра (метод средней точки).
circPt.setCoords (0, radius); // Задаются координаты
//верхней точки окружности, void circlePlotPoints (GLint, GLint, screenPt);
/* В каждом квадранте изображается первая точка. */ circlePlotPoints (xc, ус, circPt);
/* Вычисляются и изображаются точки во всех октантах.*/ while (circPt.getx ( ) < circPt.gety ( )) { circPt.incrementx ( ); if (p < 0)
p += 2 * circPt.getx ( ) +1; else {
circPt.decrementy ( );
p += 2 * (circPt.getx ( ) - circPt.gety ( )) +1;
}
circlePlotPoints (xc, yc, circPt);
}
}
void circlePlotPoints (GLint хс, GLint ус, screenPt circPt) {
эеЪР1хе1 (хс + ci.rcPt.getx ( ), ус + ci.rcPt.gety ( ))
setPixel (хс - circPt.getx ( ), ус + ci.rcPt.gety ( ))
setPixel (хс + circPt.getx ( ), ус - ci.rcPt.gety ( ))
setPixel (хс - circPt.getx ( ), ус - ci.rcPt.gety ( ))
setPixel (хс + circPt.gety ( ), ус + ci.rcPt.getx ( ))
setPixel (хс - circPt.gety ( ), ус + ci.rcPt.getx ( ))
setPixel (хс + circPt.gety ( ), ус - ci.rcPt.getx ( ))
setPixel (хс - circPt.gety ( ), ус - ci.rcPt.getx ( ))