Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KG_Met_k_LR11.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
660.99 Кб
Скачать

1.3. Визуализация сплайнов

Прямое вычисление точек сплайна P(t) для его визуализации весьма трудоемко из-за сложности базисных функций. Чтобы сократить вычисления сплайн обычно аппроксимируют ломаной линией. Аппроксимация приводит к погрешности в изображении сплайна, поэтому для визуализации с хорошим качеством погрешность δ на участках аппроксимации нужно контролировать, не допуская превышения максимально допустимого значения δmax. Однако, если для аппроксимации использовать табуляцию P(t) с постоянным шагом ∆t по t, то из-за разной кривизны P(t) на отдельных участках аппроксимации будет разной и погрешность δ.

Чтобы гарантировать δδmax на всех участках аппроксимации можно использовать табуляцию с заведомо малым шагом ∆t. Но при слишком малом ∆t, когда координаты x и y изменяются менее чем на 1, на изображении сплайна могут появиться утолщения, которые сильно портят его вид. Связано это с округлением координат всех вычисляемых и выводимых на экран точек. На рис. 1.4, демонстрирующем этот эффект, «лишние» пиксели закрашены светлым.

Рис. 1.4

Следовательно, желательно чтобы в алгоритме визуализации сплайнов выбор шага ∆t был оптимальным и зависел от заданного значения δmax. В связи с этим рассмотрим довольно простой метод оптимизации ∆t, основанной на контроле условия δδmax.

Первоначально табуляцию P(t) выполняют с достаточно большим постоянным шагом ∆t. Затем исследуется погрешность от аппроксимации на участках с вдвое большим шагом, то есть с шагом 2∆t (рис. 1.5).

Строго говоря, погрешность δ на каждом участке аппроксимации должна определяться как наибольшая длина перпендикуляра от отрезка прямой к данному участку кривой, однако это требует весьма сложных расчетов. Поэтому для приближенного, но более простого расчета погрешности δ на очередном участке P(t)P(t + 2t) будем оценивать ее как кратчайшее расстояние от середины участка кривой по параметру t, т.е. от точки P(t + t) до отрезка прямой, стягивающего концы этого участка:

Рис. 1.5

(1.21)

где x = x(t + 2t)x(t); y = y(t + 2t)y(t). Знак δ в формуле соответствует расположению (слева или справа) точки P(t + t) относительно прямой P(t)P(t + 2t) при движении от P(t) к P(t + 2t).

Если |δ| < δmax, значит на участке P(t)P(t+2t) заданная точность достигнута уже при шаге 2∆t. В противном случае, чтобы повысить точность на данном участке, шаг ∆t уменьшают вдвое и проводят расчет погрешности для каждого нового участка по той же схеме.

Если на участке кривой есть точка перегиба (рис.1.6), то предложенный подход к оценке погрешности становится неприемлемым, так как точка с максимальной погрешностью скорее всего находится не в центре участка.

Признаком перегиба кривой служит смена знака расстояния δ на соседних участках аппроксимации. Например, для участков P(t)P(t+2∆t) и P(t+2∆t)P(t+4∆t) признаком перегиба будут противоположные знаки погрешности для точек P(t+∆t) и P(t+3∆t). Тогда независимо от величины δ на обоих участках шаг t следует уменьшить вдвое.

Рис. 1.6

Следует отметить, что возможность появления точек перегиба на кривой зависит от степени базисных полиномов. Так, на кубическом сплайне возможна только одна точка перегиба, с повышением степени полиномов возможное число точек перегиба на кривой возрастает.

В результате исполнения описанного алгоритма формируется список точек, которые соединяют между собой отрезками прямых. При этом автоматическая оптимизация шага t гарантирует построение сплайна с требуемой точностью.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]