Главная > Разное > Принципы программирования в машинной графике
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

2.8. СГЛАЖИВАНИЕ КРИВЫХ

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

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

— двух уже упомянутых и двух соседних с ними точек. В-сплайн обеспечивает получение более гладких кривых, чем другие способы сглаживания за счет того, что получаемые кривые не проходят точно через заданные точки Математически гладкость кривых выражается в терминах непрерывности параметрических представлений и их производных. Кривые типа В-сплайна обладают свойством непрерывности даже вторых производных и в точках стыковки двух соседних сегментов

Рис. 2.18. (а) - нулевая производная разрывна; (б) - первая производная не непрерывна; (в) - вторая производная не непрерывна

кривой. Из рис. 2.18 можно видеть, как выглядят кривые, если их нулевая, первая и вторая производные не непрерывны в некоторой точке. Кривая на рис. может считаться гладкой, но она не удовлетворяет строгим требованиям, которые выполняются в способе В-сплайна.

После такого краткого обсуждения рассмотрим этот метод в работе. Будем использовать параметрическое представление кривых. Любая точка части кривой между двумя заданными последовательными точками будет иметь координаты где увеличивается от 0 до 1, если отслеживается часть кривой от точки Р до точки Можно считать, что это время. Если имеются заданные точки

то часть кривой В-сплайна между двумя последовательными точками получается путем вычисления функций для изменения от 0 до 1

Эти уравнения содержат следующие коэффициенты:

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

Для получения некоторого представления о свойствах кривой в точках стыковки двух сегментов рассмотрим функцию и ее первую и вторую производные для значений (функция будет обладать аналогичными свойствами)

Используя уравнение (2.13), после упрощения получаем

Можно видеть, что значение не равно в точности х-координате точки : оно зависит от позиций точек Из рис. 2.19 видно, что точка В является точкой сегмента но одновременно и начальной точкой сегмента

Рис. 2.19. Три последовательные точки

Для первого сегмента имеем

где через обозначено вычисленное значение координаты х для точки В. Рассматривая эту же точку как принадлежащую сегменту получим

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

Для расчета любого сегмента кривой между точками Р и используются также точки Из этого следует, что первый сегмент кривой будет располагаться между точками а последний — между точками что начальная и конечная точки всей кривой будут располагаться вблизи и но не вблизи Приведенная ниже программа считывает числа

из файла При выводе каждая из точек обозначается маркером в виде креста. Затем вычерчивается кривая В-сплайна.

(см. скан)

(см. скан)

то в результате работы программы получим изображение, показанное на рис. 2.20.

Рис. 2.20. Результат работы программы

УПРАЖНЕНИЯ

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление