х = у = 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 ( ))


⇐ вернуться назад | | далее ⇒