Функция рисования окружности по точкам

Алгоритм генерации круга

Рисование круга на экране немного сложнее, чем рисование линии. Существует два популярных алгоритма для генерации круга — алгоритм Брезенхема и алгоритм средней точки круга . Эти алгоритмы основаны на идее определения последующих точек, необходимых для рисования круга. Давайте обсудим алгоритмы подробно —

Уравнение окружности: X 2 + Y 2 = r 2 , где r — радиус.

Функция рисования окружности по точкам

Видео:Построение окружности по трём точкам.Скачать

Построение окружности по трём точкам.

Алгоритм Брезенхема

Мы не можем отобразить непрерывную дугу на растровом дисплее. Вместо этого мы должны выбрать ближайшее положение пикселя, чтобы завершить дугу.

На следующем рисунке вы можете видеть, что мы поместили пиксель в положение (X, Y) и теперь должны решить, куда поместить следующий пиксель — в N (X + 1, Y) или в S (X + 1, Y-1).

Функция рисования окружности по точкам

Это может быть решено параметром решения d .

  • Если d
  • Если d> 0, то S (X + 1, Y-1) должен быть выбран в качестве следующего пикселя.

Алгоритм

Шаг 1 — Получить координаты центра окружности и радиуса и сохранить их в x, y и R соответственно. Установите P = 0 и Q = R.

Шаг 2 — Установите параметр решения D = 3 — 2R.

Шаг 3 — Повторите шаг 8, пока P ≤ Q.

Видео:Уравнение окружности (1)Скачать

Уравнение окружности (1)

Как построить окружность?

Как построить окружность?

Окружностью называется фигура которая состоит из всех точек плоскости равноудаленных от данной точки. Эта точка называется центром окружности.

Радиусом называется любой отрезок соединяющей точку окружности с ее центром.

Чтобы построить окружность необходимо знать уравнение окружности:

(х – а) 2 + (у – b) 2 = R 2

Точка С(а;b) центр окружности, радиус R, х и у – координаты произвольной точки окружности.

И так, чтобы построить окружность необходимо знать цент окружности и радиус. Рассмотрим пример:

Пример №1:
(х – 1) 2 + (у – 2) 2 = 4 2

Найдем центр окружности:
х – 1=0
x=1

Центр окружности будет находится в точке (1;2)

Найдем радиус окружности:
R 2 =4
R 2 =2 2
R=2

Построим окружность. Отметим сначала центр окружности, а потом отложим с четырех сторон (вверх, вниз, влево и право) длину радиуса и отметим эту длину точками. Потом проведем окружность.
Функция рисования окружности по точкам

Пример №2:
х 2 + (у + 1) 2 =1

Можно представить уравнение окружности ввиде:
(х-0) 2 + (у + 1) 2 =1 2

Найдем центр окружности:
х=0

Центр окружности будет находится в точке (0;–1)

Найдем радиус окружности:
R 2 =1
R 2 =1 2
R=1

Построим окружность.
Функция рисования окружности по точкам

Подписывайтесь на канал на YOUTUBE и смотрите видео, подготавливайтесь к экзаменам по математике и геометрии с нами.

Видео:10 класс, 11 урок, Числовая окружностьСкачать

10 класс, 11 урок, Числовая окружность

Функция рисования окружности по точкам

Алгоритмы взяты из прекрасной книги
П.В.Вельтмандер «Машинная графика»

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


1 Алгоритм БрезенхемаФункция рисования окружности по точкамФункция рисования окружности по точкам

Для простоты и без ограничения общности рассмотрим генерацию 1/8 окружности, центр которой лежит в начале координат. Остальные части окружности могут быть получены последовательными отражениями (использованием симметрии точек на окружности относительно центра и осей координат).

Окружность с центром в начале координат описывается уравнением:

X 2 + Y 2 = R 2

Алгоритм Брезенхема пошагово генерирует очередные точки окружности, выбирая на каждом шаге для занесения пиксела точку растра Pi(Xi, Yi), ближайшую к истинной окружности, так чтобы ошибка:

Ei(Pi) = (Xi 2 + Yi 2 ) — R 2

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

Рассмотрим генерацию 1/8 окружности по часовой стрелке, начиная от точки X=0, Y=R.

Проанализируем возможные варианты занесения i+1-й точки, после занесения i-й.

Функция рисования окружности по точкам

При генерации окружности по часовой стрелке после занесения точки (Xi, Yi) следующая точка может быть (см. рис. 0.1а) либо Pg = (Xi+1, Yi) — перемещение по горизонтали, либо Pd = (Xi+1, Yi-1) — перемещение по диагонали, либо Pv = (Xi, Yi-1) — перемещение по вертикали.

Для этих возможных точек вычислим и сравним абсолютные значения разностей квадратов расстояний от центра окружности до точки и окружности:

| Dg |

=

| (X+1) 2

+

Y 2

R 2 |

| Dd |

=

| (X+1) 2

+

(Y-1) 2

R 2 |

| Dv |

=

| X 2

+

(Y-1) 2

R 2 |

Выбирается и заносится та точка, для которой это значение минимально.

Выбор способа расчета определяется по значению Dd. Если Dd 0, то диагональная точка вне окружности. Это варианты 5-7. И, наконец, если Dd = 0, то диагональная точка лежит точно на окружности. Это вариант 4. Рассмотрим случаи различных значений Dd в только что приведенной последовательности.

Случай Dd

Здесь в качестве следующего пиксела могут быть выбраны или горизонтальный — Pg или диагональный — Pd.

Для определения того, какой пиксел выбрать Pg или Pd составим разность:

di

=

| Dg | — | Dd | =

| (X+1) 2 + Y 2 — R 2 | — | (X+1) 2 + (Y-1) 2 — R 2 |

И будем выбирать точку Pg при di Ј 0, в противном случае выберем Pd.

Рассмотрим вычисление di для разных вариантов.

Для вариантов 2 и 3:

Dg і 0 и Dd

di = (X+1) 2 + Y 2 — R 2 + (X+1) 2 + (Y-1) 2 — R 2 ;

Добавив и вычтя (Y-1) 2 получим:

di = 2 ·[(X+1) 2 + (Y-1) 2 — R 2 ] + 2·Y — 1

В квадратных скобках стоит Dd, так что

di = 2 ·(Dd + Y) — 1

Для варианта 1:

Ясно, что должен быть выбран горизонтальный пиксел Pg. Проверка компонент di показывает, что Dg Случай Dd > 0

Здесь в качестве следующего пиксела могут быть выбраны или диагональный — Pd или вертикальный Pv.

Для определения того, какую пиксел выбрать Pd или Pv составим разность:

si

=

| Dd | — | Dv | =

| (X+1) 2 + (Y-1) 2 — R 2 | — | X 2 + (Y-1) 2 — R 2 |

Если si Ј 0, то расстояние до вертикальной точки больше и надо выбирать диагональный пиксел Pd, если же si > 0, то выбираем вертикальный пиксел Pv.

Рассмотрим вычисление si для разных вариантов.

Для вариантов 5 и 6:

Dd > 0 и Dv Ј 0, так как диагональный пиксел вне, а вертикальный либо вне либо на окружности.

si = (X+1) 2 + (Y-1) 2 — R 2 + X 2 + (Y-1) 2 — R 2 ;

Добавив и вычтя (X+1) 2 получим:

si = 2 ·[(X+1) 2 + (Y-1) 2 — R 2 ] — 2·X — 1

В квадратных скобках стоит Dd, так что

si = 2 ·(Dd — X) — 1

Для варианта 7:

Ясно, что должен быть выбран вертикальный пиксел Pv. Проверка компонент si показывает, что Dd > 0 и Dv > 0, причем si > 0, так как диагональная точка больше удалена от окружности, т.е. по критерию si > 0 как и в предыдущих случаях следует выбрать вертикальный пиксел Pv, что соответствует выбору для вариантов 5 и 6.

Случай Dd = 0

Для компонент di имеем: Dg > 0 и Dd = 0, следовательно по критерию di > 0 выбираем диагональный пиксел.

С другой стороны, для компонент si имеем: Dd = 0 и Dv Ј 0 также выбираем диагональный пиксел.

Dd Ј 0 — выбор горизонтального пиксела Pg

di > 0 — выбор диагонального пиксела Pd

si Ј 0 — выбор диагонального пиксела Pd

si > 0 — выбор вертикального пиксела Pv

выбор диагонального пиксела Pd.

Выведем рекуррентные соотношения для вычисления Dd для (i+1)-го шага, после выполнения i-го.

1. Для горизонтального шага к Xi+1, Yi

2. Для диагонального шага к Xi+1, Yi-1

3. Для вертикального шага к Xi, Yi-1

В Приложении 5 приведена подпрограмма V_circle, реализующая описанный выше алгоритм и строящая дугу окружности в первой четверти. Начальная инициализация должна быть:

Dd = (X+1) 2 + (Y-1) 2 — R 2 = 1 + (R-1) 2 — R 2 = 2*(1 — R)

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

В Приложении приведены подпрограмма V_BRcirc, реализующая описанный выше алгоритм и строящая дугу окружности во втором октанте с последующим симметричным занесением пикселов. Эта процедура может строить и 1/4 окружности. Подробнее см. текст Приложения. Там же приведена более короткая подпрограмма, строящая 1/8 окружности методом Мичнера [], (том 1, стр. 152). Остальная часть окружности строится симметрично.
0.15 Приложение 4. Процедуры генерации окружностиФункция рисования окружности по точкамФункция рисования окружности по точкам

В данном приложении помещены процедуры генерации окружностей по алгоритму Брезенхема и Мичнера, а также программа T_Circle для тестирования данных процедур.

🔥 Видео

Тригонометрическая окружность. Как выучить?Скачать

Тригонометрическая окружность. Как выучить?

"Парадоксальное" среднее расстояние между точками на окружностиСкачать

"Парадоксальное" среднее расстояние между точками на окружности

Как искать точки на тригонометрической окружности.Скачать

Как искать точки на тригонометрической окружности.

Всё про углы в окружности. Геометрия | МатематикаСкачать

Всё про углы в окружности. Геометрия  | Математика

ТРИГОНОМЕТРИЯ С НУЛЯ - Единичная Окружность // Подготовка к ЕГЭ по МатематикеСкачать

ТРИГОНОМЕТРИЯ С НУЛЯ - Единичная Окружность // Подготовка к ЕГЭ по Математике

Математика Без Ху!ни. Полярные координаты. Построение графика функции.Скачать

Математика Без Ху!ни. Полярные координаты. Построение графика функции.

Тригонометрическая окружность для непонимающихСкачать

Тригонометрическая окружность для непонимающих

9 класс, 6 урок, Уравнение окружностиСкачать

9 класс, 6 урок, Уравнение окружности

Точки на числовой окружностиСкачать

Точки на числовой окружности

начертить окружность. Привести уравнение окружности к стандартному виду. Координаты центра и радиус.Скачать

начертить окружность. Привести уравнение окружности к стандартному виду. Координаты центра и радиус.

Математика это не ИсламСкачать

Математика это не Ислам

Построение окружности по 3 точкамСкачать

Построение окружности по 3 точкам

Изобразить область на комплексной плоскостиСкачать

Изобразить область на комплексной плоскости

Задание 23 из ОГЭ Построение графиков функций с модулем | МатематикаСкачать

Задание 23 из ОГЭ Построение графиков функций с модулем | Математика

Математика без Ху!ни. Кривые второго порядка. Эллипс.Скачать

Математика без Ху!ни. Кривые второго порядка. Эллипс.

Математика | 5 ЗАДАЧ НА ТЕМУ ОКРУЖНОСТИ. Касательная к окружности задачиСкачать

Математика | 5 ЗАДАЧ НА ТЕМУ ОКРУЖНОСТИ. Касательная к окружности задачи

Построение графиков тригонометрических функций с помощью преобразований. Практ. часть. 10 класс.Скачать

Построение графиков тригонометрических функций с помощью преобразований. Практ. часть. 10 класс.
Поделиться или сохранить к себе: