#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 точек на окружности достаточно для получения приемлемого изображения.