Рисование круга без использования для него функции

#graphics #geometry

#графика #геометрия

Вопрос:

Итак, мне было интересно, как работает circle() функция, и как я могу нарисовать круг, не используя его (хотел сделать что-то связанное с этим). Кто-нибудь знает этот материал?

Комментарии:

1. Начните с уравнения окружности .

2. В школе еще не изучали материал, связанный с кругами, спасибо за информацию!

3. Хм, ну, это усложняет задачу. Часто бывает так, что хорошие инженеры-программисты хорошо разбираются в математике. И это пример того, почему. Особенно в компьютерной графике программные алгоритмы часто основаны на продвинутой математике.

Ответ №1:

Классический способ растрирования окружности — использование алгоритма окружности средней точки.

Он работает путем отслеживания пикселей, которые находятся как можно ближе к изолинии x2 y2 = r2. Это можно сделать даже с помощью чисто целочисленных вычислений, что особенно подходит для устройств с низкой вычислительной мощностью.

Ответ №2:

Окружность — это набор точек, расположенных на постоянном расстоянии от другой точки, называемой центром.

Если вы можете рисовать lines , определяемый двумя points , вы можете нарисовать представление a circle на холсте, зная его center и его radius .

Подход заключается в определении набора последовательных точек, расположенных на окружности, затем соедините их линиями.

например, в python (который читается как псевдокод):

 import math

def make_circle(center, radius, num_points=40):
    """returns a sequence of points on the circumference
    """ 
    points = [center]
    d_theta = 2 * math.pi / num_points
    cx, cy = center
    for idx in range(num_points   1):
        theta = idx * d_theta
        points.append((cx   math.cos(theta) * radius, cy   math.sin(theta) * radius))
    return points
  

И если вы хотите попробовать, вот оно: circles codeskulptor .
Вы увидите, что для целей отображения 40 точек на окружности достаточно для получения приемлемого изображения.