Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
Любая задача на C/C++
Одно любое задание в mYsql
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Любой реферат по информатике

Генерирование отрезка прямой

2021-03-09СтудИзба

Генерирование отрезка прямой.  алгоритм Брезенхема

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

Отрезок прямой задается начальной точкой Т1 с координатами x1,y1 и конечной точкой Т2 с координатами x2,y2. Исходя из заданных концевых точек, рассчитывается крутизна отрезка:

m=Dy/Dx, где:

Dx = x2 – x1 ;

Dy = y2 – y1.

 Рассмотрим простейший случай, когда

Dx >=0,  Dy >=0,  Dx >=Dy ,

и для этого случая разработаем алгоритм формирования отрезка прямой.

Рекомендуемые материалы

Возьмем в качестве  аргумента x, а в качестве функции  y.

Учитывая характер рассматриваемого случая, можно утверждать, что претендентами на роль следующей за последней найденной точкой с координатами xi, yi будут  точки, имеющие координаты X, отличающиеся от координаты X последней найденной точки на «+1», а координата Y  одного претендента равна координате Y найденной точки, а  другого – с приращением «+1» (Рис. 2.1‑1).


Рис. 2.11

В качестве следующей точки из двух претендентов выбирается тот, который ближе располагается к расчетному положению.
Для очередной формируемой (i+1)-ой точки ее отклонение di+1 от рассчетной точки определяется следующим образом (см. Рис. 2.1‑1):

di+1 =di +m.

Отсюда  можно записать:

Процедура выбора следующей точки иллюстрируется ниже приведенным рисунками Рис. 2.1-2 - Рис. 2.1‑4. На Рис. 2.1‑2  приведена последовательность пикселов, с помощью которых отображается формируемый отрезок.

На рис. Рис. 2.1‑3  приведена кривая, соответствующая погрешности (отклонению от расчетного положения) формирования отрезка на каждой формируемой точке.

Для того чтобы избавиться от сравнения отклонения с дробным числом 1/2, вводится постоянное смещение отклонения на -1/2. В этом случае кривая погрешности будет иллюстрироваться  Рис. 2.1‑4, а процесс выбора следующей точки из двух претендентов происходит по правилу:

  


  

               

  

Рис. 2.12


 

Рис. 2.13


Рис. 2.14

Выше изложенное позволяет представить алгоритм формирования отрезка прямой для рассматриваемого частного случая в виде граф-схемы, приведенной на следующем рисунке (Рис. 2.1‑5):


 

Рис. 2.15

Для того, чтобы избавиться от длинных операций и действительных величин, введем замену:

e  = 2dDx.

В приведенном алгоритме анализируется не величина переменной  d, а только ее знак. Учитывая то, что  в рассматриваемом частном случае положения формируемого отрезка  приращение Dx всегда положительно,  вводимая переменная «e» будет иметь тот же знак, что и d. Поэтому в алгоритме на рис.2.1-5 анализ переменной «d» можно заменить анализом переменной «е».

 С учетом этой замены граф-схема алгоритма будет иметь вид, приведенный на следующем рисунке (Рис. 2.1‑6).

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


Рис. 2.16

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

Для общего положения формируемого отрезка на плоскости, приращения аргумента и функции могут быть как на «+1», так и на «-1».

 Кроме того, крутизна

m = Dy/Dx

может быть больше  или меньше единицы.

На рис.Рис. 2.1‑7  приведено формирование из пикселов отрезков, крутизна которых больше единицы. На Рис. 2.1‑7b) в качестве аргумента используется координата X. На Рис. 2.1‑7a) в качестве аргумента используется координата Y.

На Рис. 2.1‑7b) яркость (плотность пикселов на единицу длины отрезка) для всех отрезков, независимо от значения их крутизны, одинаковая.

Из Рис. 2.1‑7a) видно, что яркость отображения отрезка будет  тем меньше, чем больше крутизна отрезка, что недопустимо. Поэтому в случаях, когда крутизна формируемого отрезка больше единицы, в качестве аргумента необходимо использовать координату Y.


Рис. 2.17

Все возможные значения крутизны и приращений координат  приведены на следующем рисунке (Рис.2.1-8).


Рис. 2.18

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

- выбирать  в качестве аргумента координату X тогда, когда положение формируемого отрезка соответствует октантам 1, 3, 4, 7 (рис.2.1-8) ;

- выбирать  в качестве аргумента координату Y тогда, когда положение формируемого отрезка соответствует октантам 2, 5, 6, 8  (рис.2.1-8)  ;

- модифицировать координату Y на «+1» в октантах 1, 2, 3, 4;

- модифицировать координату Y на «-1» в октантах 4, 5, 6, 7, 8;

- модифицировать координату X на «+1» в октантах 1, 2, 7, 8;

- модифицировать координату X на «-1» в октантах 4, 5, 6, 7, 8.

Для построения алгоритма для общего случая положения отрезка введем переменную-флажок «С», которой будем приписывать значение «0», если в качестве аргумента выбирается  X, и «1», если в качестве аргумента выбирается  Y. Для обеспечения требуемой модификации аргумента и функции (на «+1» или на «-1»), определим  функцию знака sign(z), которая принимает следующие значения:

В этом случае граф-схема алгоритма формирования отрезка прямой (алгоритма Брезенхема) будет имеет вид, приведенный на следующем рисунке (рис.2.1- 9).

На рис.2.1- 9 используется  обозначения, принятые на рис.2.1- 6. Кроме того, введены дополнительные обозначения:

- Sx – знак приращения X от начальной к конечной точке формируемого отрезка;

- Sy– знак приращения Y от начальной к конечной точке формируемого отрезка.

Отделбные фрагменты приведенного алгоритма выполняют следующие действия.

Блок операторов 1 обеспечивает установку начальных значений для переменных, используемых в рассматриваемом алгоритме.

 Блок операторов 2 обеспечивает в зависимости от заданного положения отрезка выбор в качестве аргумента или координаты X, или координаты Y. Кроме того, в этом блоке устанавливается соответствующее значение для флага C.

 Блок операторов 3 обеспечивает анализ завершения формирования отрезка. Отрезок считается сформированным, если значение параметра цикла «i» превысило число точек, составляющих отрезок. Количество точек равно Dx, которое в данной точке алгоритма равно количеству аргументов (по координате X или Y  в зависимости от наклона отрезка).

Блок операторов 4 обеспечивает определение, какая координата (X или Y) используется в качестве функции,  и модифицирует эту координату.

 Блок операторов 5 обеспечивает определение, какая координата (X или Y) используется в качестве аргумента,  и модифицирует эту координату.

Рекомендуем посмотреть лекцию "Биологические мембраны".


   

 

Рис. 2.19

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

фиксированной точкой. Все это свидетельствует о том, что при реализации данного алгоритма имеют место минимальные затраты времени.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее