Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Растровая развертка эллипсов
Простой метод Эллипс — это сплюснутая или расплюснутая окружность. Эллипс имеет 2 фокуса, сумма расстояния от любой т. эллипса до каждого фокуса = const. Окружность — это вырожденный случай эллипса, когда фокусы совпадают.
Рис. 3.11
Эллипс имеет 2 радиуса – А и В.
Для окружности: А=В
Для эллипса:
Используя симметрию, достаточно сгенерировать 1\4 элемента. Вначале основная ось – X, X изменяется от 0 до т. Р, в которой наклон касательной к эллипсу = 450.
Рис. 3.12
После этого основная ось – Y. Вначале x=0, y=B, x=1, y=y1, где
.
При x=1, и т.д. до тех пор, пока . Далее y изменяется на 1 и вычисляется x.
Инкрементивный метод Уравнение элемента можно переписать:
Решим приведенное уравнение для x=0 и y=B-0, 5, что позволит оценить, как далеко x от того значения, при котором y=B-0, 5 (B-0, 5 – это т. перехода на следующий по оси Y). Потом пересчитывается уравнение для x+1 и т.д. Когда результат станет положительным, пора декрементировать y. Итак, установим , y=B-0, 5
Значит, начальная ошибка накопления:
Если проигнорировать, то останется целочисленная арифметика. Вычисленную вначале ошибку накопления надо корректировать с каждым шагом по оси X, пока она не станет положительной, указывая изменить y. Это делается так. Для текущей точки = . Для следующей т. = . уже содержится в текущей ошибке, поэтому добавляется к x при каждом шаге (все вычисляется в целых числах). Когда ошибка , делается шаг по оси Y и пересчитывается ошибка для следующего шага. Для этого вместо y в уравнение эллипса подставляется y-1:
Т.к. уже есть, то инкрементивная часть =
.
Рисование прекращается по достижению наклона касательной 450, что определяется тем, что приращение по неосновной оси приращению по основной оси.
|