[an error occurred while processing this directive]
|
// Рисование 1/8 окружности (алгоритм Миллера)
void DrawCircle (unsigned char xc, unsigned char yc, unsigned char radius, unsigned char pixel)
{
char x, y, d;
x = 0;
y = radius;
d = 3 - 2 * radius;
while (x < y)
{
PixelCircle(xc, yc, x, y, pixel);
if (d < 0) d = d + 4 * x + 6;
else
{
d = d + 4 * (x - y) + 10;
--y;
}
++x;
}
if (x == y) PixelCircle(xc, yc, x, y, pixel);
}
// Симметричные точки для других частей окружности
PixelCircle (unsigned char xc, unsigned char yc, unsigned char x, unsigned char y, unsigned char pixel)
{
PutPixelXY(xc + x, yc + y, pixel);
PutPixelXY(xc + y, yc + x, pixel);
PutPixelXY(xc + y, yc - x, pixel);
PutPixelXY(xc + x, yc - y, pixel);
PutPixelXY(xc - x, yc - y, pixel);
PutPixelXY(xc - y, yc - x, pixel);
PutPixelXY(xc - y, yc + x, pixel);
PutPixelXY(xc - x, yc + y, pixel);
}
А лучше в поисковике набрать слова "алгоритм Брезенхема", "алгоритм Миллера", "машинная грфика"...
E-mail: info@telesys.ru