Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Общий алгоритм Брезенхема
Чтобы реализация алгоритма Брезенхема была полной необходимо обрабатывать отрезки во всех октантах. Модификацию легко сделатть, учитывая в алгоритме номер квадранта, в котором лежит отрезок и его угловой коэффициепт. Когда абсолютная величина углового коэффициента больше 1, у постоянно изменяется на единицу, а критерий ошибки Брезенхема используется для принятия решения об изменении величины x. Выбор постоянно изменяющейся (на +1 или -1) кооординаты зависит от квадранта (рис.4.1.). Общий алгоритм может быть оформлен в следующем виде: Обобщенный целочисленный алгоритм Брезенхема квадрантов предполагается, что концы отрезка (x1,y1) и (x2,y2) не совпадают все переменные считаются целыми Sign - функция, возвращающая -1, 0, 1 для отрицательного, нулевого и положительного аргумента соответственно инициализация переменных x = x1 y = y1 x = abs(x2 - x1) y = abs(y2 - y1) s1 = Sign (x2 - x1) s2 = Sign (y2 - y1) обмен значений x и y в зависимости от углового коэффициента наклона отрезка if y < x then Врем = x x = y y = Врем Обмен = 1 Else Обмен = 0 End if инициализация с поправкой на половину пиксела = 2*y - x основной цикл for i = 1 to x Plot (x,y) while ( =>0) if Обмен = 1 then x = x + s1 Else y = y + s2 End if = - 2*x End while if Обмен = 1 then y = y + s2 Else x = x + s1 End if = + 2*y Next i Finish Рис.4.1. Разбор случаев для обобщенного алгоритма Брезенхема.
Пример 4.1. обобщенный алгоритм Брезенхема. Для иллюсрации рассмотрим отрезок из точки (0,0) в точку (-8, -4). начальные установки x = 0 y = 0 x = 8 y = 4 s1 = -1 s2 = -1 Обмен = 0 е = 0 результаты работы пошагового цикла
Рис.4.2. Результат работы обобщенного алгоритма Брезенхема в третьем квадранте. На рис.4.2 продемонстрирован результат. Сравнение с рис. 2.2 показывает, что результаты работы двух алгоритмов отличаются. В следующем разделе рассматривается алгоритм Брезенхема для генерации окружности. Date: 2015-07-01; view: 525; Нарушение авторских прав |