Итак, у нас есть функция DrawPoint (x, y), которая рисует точку, мы должны нарисовать некоторое количество точек, которые выглядят как круг.Как создать такой for(i=0; i<numberOfIterations; i++), чтобы нарисовать круг?
for(i=0; i<numberOfIterations; i++)
// (cx, cy) is the center of the circle // r is the circle radius // the smaller the granularity, the better the circle will look // to draw only numberOfIterations points, granularity // should be 2*pi / numberOfIterations for(i=0; i<2*pi; i+=granularity) DrawPoint(cx + r*sin(i), cy + r*cos(i));
Один из лучших алгоритмов для получения приличного круга - алгоритм круга Брезенхэма, также называемый Алгоритм круга средней точки .
Проблема с прямыми, простыми процедурами окружности заключается в том, что они имеют тенденцию иметь псевдонимные эффекты и не выглядят правильно в результате, этот алгоритм дает лучшее приближение, хотя не строго соответствует вашему требованию к циклу for(;;), хотя все еще итеративный цикл.
for(;;)