Имея int I и число, если итерации и функцию DrawPoint (x, y), как нарисовать круг? - PullRequest
3 голосов
/ 23 декабря 2010

Итак, у нас есть функция DrawPoint (x, y), которая рисует точку, мы должны нарисовать некоторое количество точек, которые выглядят как круг.Как создать такой for(i=0; i<numberOfIterations; i++), чтобы нарисовать круг?

Ответы [ 2 ]

5 голосов
/ 23 декабря 2010
// (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));
4 голосов
/ 23 декабря 2010

Один из лучших алгоритмов для получения приличного круга - алгоритм круга Брезенхэма, также называемый Алгоритм круга средней точки .

Проблема с прямыми, простыми процедурами окружности заключается в том, что они имеют тенденцию иметь псевдонимные эффекты и не выглядят правильно в результате, этот алгоритм дает лучшее приближение, хотя не строго соответствует вашему требованию к циклу for(;;), хотя все еще итеративный цикл.

...