Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сглаживание линий
Есть итальянская поговорка: “Необязательно говорить правду, главное, чтобы то, что вы скажите, хорошо звучало”. Это относится и к сглаживанию линий; не нужно рисовать картинку идеально. Нужно, чтобы картинка лишь выглядела как настоящая. Не следует углубляться в сложную математику, чтобы получить идеально сглаженные линии, зрительная система человека видит то, что хочет видеть, так почему бы не дать ей лишь ключ к распознаванию?
Алгоритм Ву Идея: при рисовании линий обычным образом с каждым шагом по основной оси высвечивается два по неосновной оси.
Рис. 3.19
Их интенсивность подбирается пропорционально расстоянию от центра до идеальной линии. Чем дальше т., тем < ее интенсивность. Значение интенсивности 2-ух дают в сумме 1, т.е. это интенсивность 1 , в точности попавшего на идеальную линию. Это придает линии одинаковую интенсивность на всем ее протяжении, создавая иллюзию, что точки расположены вдоль линии не по 2, а по одной в точности по идеальной линии. Горизонтальные, вертикальные и диагональные линии не требуют сглаживания. Для других линий алгоритм Ву проходит их вдоль основной оси, подбирая координаты по неосновной оси. Смещение вдоль неосновной оси вычисляется 1 целочисленным делением (для линий с наклоном < 1 берется сам наклон, с наклоном > 1 – 1\2 наклона). Это значение называется ошибкой смещения. Ошибка накопления () показывает, как далеко ушли от идеальной линии по неосновной оси, и как только она достигает критического значения, делается шаг на 1 вдоль неосновной оси. Если основной осью является X, то будут установлены 2 т. с координатами (x, y) и (x, y+1). Короче говоря, продвижение вдоль линии аналогично алгоритму Брезенхэма, только на каждом этапе устанавливается не 1 , а 2. Осталось определить их интенсивность. Ошибка смещения суммируется с ошибкой накопления. Пусть число уровней интенсивности кратно 2, min интенсивность — , max интенсивность — 0. Старшие n битов ошибки накопления покажут необходимую интенсивность для одного из . Интенсивность 2-го пары - интенсивность . Ошибка накопления содержит соотношение расстояний от центра каждого из двух до идеальной линии.
Рис. 3.20
|