Растровая развертка эллипсов
Простой метод
Эллипс — это сплюснутая или расплюснутая окружность.
Эллипс имеет 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, что определяется тем, что приращение по неосновной оси приращению по основной оси.
Дата добавления: 2016-07-18; просмотров: 2431;