Обобщенный алгоритм Брезенхема вычерчивания отрезков

Когда |k| > 1, у - основное направление и у постоянно изменяется на 1, а изменение ошибки анализируется для принятия решения об изменении координаты х. Когда |k| < 1, основным направлением является х, поэтому х постоянно изменяется на 1, а изменение ошибки анализируется для принятия решения об изменении координаты у.

Выбор постоянно изменяющейся (основной) координаты (на +1 или -1) зависит от октанта (см. рис. 9).

Обобщенный алгоритм Брезенхема на псевдокоде:

(x1, y1) – начальная точка

(x2, y2) – конечная точка

e - ошибка

dx – приращение по координате x

dy - приращение по координате y

sx – знак приращения по x

sy - знак приращения по y

флаг - показывает, произошел обмен основной и дополнительной координаты или нет

врем – временная переменная для обмена

Sign (x) – функция, возвращающая –1,0 или 1 для отрицательного, нулевого и положительного аргумента соответственно.

Plot (x, y) – процедура “подсвечивания” пиксела с координатами (x,y)

начало

инициализация переменных

x = x1, y = y1

dx = abs (x2-x1), dy = abs (y2-y1)

sx = sign (x2-x1 ), sy = sign (y2-y1 )

обмен значений dx и dy, если y – основное направление

if dy>dx then

врем = dx

dx = dy

dy = врем

флаг = 1

else

флаг = 0

end if

инициализация ошибки

e = 2*dy – dx

основной цикл

for i = 1 to dx

plot (x,y)

изменение дополнительной координаты

if(e>=0) then

if flag = 1 then x = x + sx

else y = y + sy

end if

e = e – 2*dx

конец if

изменение основной координаты

if flag = 1 then y = y + sy

else x = x + sx

конец if

накопление ошибки

e = e + 2*dy

next i

конец


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: