Алгоритм рисования окружности Минчера
От: Shadow Angel  
Дата: 16.05.03 09:18
Оценка:
Где можно найти описание этого алгоритма?
Re: Алгоритм рисования окружности Минчера
От: Apapa Россия  
Дата: 16.05.03 13:48
Оценка:
Привет, Shadow Angel!

SA>Где можно найти описание этого алгоритма?


В инете ссылок что-то не видно, здесь только есть реализация алгоритма:

void V_MIcirc (xc, yc, r, pixel)
int  xc, yc, r, pixel;
{  int  x, y, d;
   x= 0;  y= r;  d= 3 - 2*r;
   while (x < y) {
      Pixel_circle (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) Pixel_circle (xc, yc, x, y, pixel);
}  /* V_MIcirc */


В общих чертах:
— вычисляется 1/8 окружности для y>=x>=0, остальные ставим по симметрии; в этой области на каждое перемещение по y приходится несколько перемещений по x;
— в переменонй d храним смещение реальной кривой, при этом вводится некоторый масштаб для того, чтобы работать с целыми числами;
— за один шаг по x увеличиваем d;
— если смещение d>=0, то по горизонтали переходим к следующему ряду (y--), d уменьшаем.

d — это некоторая мера отклонения. Откуда она взялась? От Минчера!


Здесь могла бы быть Ваша реклама!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.