![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В каждой точке эллипса существует вектор нормали, задаваемый градиентом функции
. Дугу разобьем на две части: первая - с углом между нормалью и горизонтальной осью больше 45° (тангенс больше 1) и вторая - с углом, меньшим 45°.
Движение вдоль дуги будем осуществлять в направлении по часовой стрелке, начиная с точки . Вдоль всей дуги координата является монотонно убывающей функцией от
, но в первой части она убывает медленнее, чем растет аргумент, а во второй - быстрее. Поэтому при построении растрового образа в первой части будем увеличивать
на единицу и искать соответствующее значение
, а во второй - сначала уменьшать значение
на единицу и определять соответствующее значение
.
Направление нормали соответствует вектору
Отсюда находим тангенс угла наклона вектора нормали: . Приравнивая его единице, получаем, что координаты точки деления дуги на вышеуказанные части удовлетворяют равенству
. Поэтому критерием того, что мы переходим ко второй области в целочисленных координатах, будет соотношение
, или, переходя к целочисленным операциям,
.
Инкрементный алгоритм для эллипса подобен алгоритму для круга, но более сложный.
В этом алгоритме использована симметрия эллипса по квадрантам (рис. 3.5).
Алгоритм состоит из двух циклов. Сначала от х=0 до x=dxt, где
Дата публикования: 2015-09-17; Прочитано: 778 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!