Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике 5-3 КУБИЧЕСКИЕ СПЛАЙНЫВ промышленном производстве, например, судо-, автомобиле- и авиастроении, окончательная форма в реальном или близком к нему масштабе определяется в процессе доводки.
Автоматизация этого процесса представляла значительный интерес для машинной графики. Форма математического сплайна повторяет контур физического сплайна (рис. 5-4), т.е. гибкой деревянной или пластмассовой линейки, проходящей через определенные точки. Для изменения формы сплайна используются свинцовые грузики. Меняя их количество и расположение, получившуюся кривую стараются сделать более гладкой, красивой и «приятной для глаза». Если рассматривать физический сплайн как тонкую гибкую рейку, его форма (отклонение ) определяется уравнением Эйлера (5-2) для момента изгиба вдоль рейки: , где - модуль Юнга, зависящий от свойств материала рейки, - момент инерции, определяемый формой кривой, - радиус кривизны. Для малых отклонений радиус приближенно равен , где штрих обозначает производную по - расстоянию вдоль рейки, а - отклонение рейки. Уравнение Эйлера принимает вид . Пусть грузики действуют как простые подпорки, тогда момент изгиба между ними изменяется линейно. Подставляя в уравнение Эйлера, получаем
и после двойного интегрирования . Таким образом, форма сплайна задается кубическим полиномом. В общем случае математический сплайн это кусочный полином степени с непрерывной производной степени в точках соединения сегментов. Так, например, кубический сплайн имеет в точках соединения непрерывность второго порядка. Кусочные сплайны из многочленов невысокого порядка очень удобны для интерполяции кривых, так как они не требуют больших вычислительных затрат и не вызывают численных отклонений, свойственных многочленам высокого порядка. По аналогии с физическими сплайнами обычно используется серия кубических сегментов, причем каждый сегмент проходит через две точки. Кубический сплайн удобен еще и тем, что это кривая наименьшего порядка, допускающая точки перегиба и изгиб в пространстве. Уравнение одного параметрического сегмента сплайна таково: , , (5-1) где и - значения параметров в начале и конце сегмента. - вектор к любой точке сегмента. - это векторно-значная функция, где три составляющие - декартовы координаты вектора.
Рис. 5-5 Один сегмент кубического сплайна. Каждая составляющая имеет вид, похожий на , т.е. , , , , , . Постоянные коэффициенты вычисляются исходя из четырех граничных условий для сегмента сплайна. Запишем уравнение (5-1) в виде , . (5-2) Пусть и - векторы концов сегмента (см. рис. 5-5). Пусть также и , производные по , будут касательными векторами в концах сегмента. Дифференцируя уравнение (5-1), получим , . (5-3) Запишем результат , . (5-4) Предположим, без потери общности, что , и применим граничные условия , (5-5а) , (5-5b) , (5-5с) . (5-5d) Получим четыре уравнения для неизвестных : , (5-6а) , (5-6b) , (5-6c) . (5-6d) Решения для и имеют вид: (5-7a) и . (5-7b) Величины , , и задают сегмент кубического сплайна. Очевидно, что форма сегмента зависит от положения и касательных векторов в концах сегмента. Далее, заметим, что в результатах присутствует значение параметра в конце сегмента. Так как каждая конечная точка и вектор касания имеют три компоненты, параметрическое уравнение кубической пространственной кривой зависит от двенадцати векторных компонент и значения параметра в конце сегмента. Подставив уравнения (5-6) и (5-7) в (5-1), получим уравнение для одного сегмента кубического сплайна:
. (5-8) Это уравнение для одного сегмента. Чтобы получить кривую целиком, нужно соединить множество сегментов. На рис. 5-6 показаны два соседних сегмента. Если известны векторы , , , касательные векторы , , и значения параметров , , то форма каждого сегмента определяется из уравнения (5-8). Однако маловероятно, что известен касательный вектор в точке соединения. К счастью, его можно вывести из условия непрерывности. Вспомним, что кусочный сплайн степени имеет непрерывность степени в точках соединения; непрерывность кубического сплайна равна двум. Для этого должна быть непрерывна вторая производная или кривизна линии. Дважды продифференцировав уравнение (5-1), получим , . (5-9)
Рис. 5-6 Два кусочно кубических сегмента сплайна. Для первого куска сплайна параметр изменяется в пределах . Подставим в уравнение (5-9): . Для второго участка сплайна параметр изменяется в диапазоне . Подставим в уравнение (5-9) значение в начале второго участка . Приравнивая полученные результаты и пользуясь уравнениями (5-6a,b) и (5-7а), получим
. Левая часть этого уравнения представляет кривизну в конце первого сегмента, а правая - в начале второго. Домножим на и сгруппируем члены: . (5-10) Отсюда определяется , неизвестный касательный вектор в точке соединения. Отметим, что в окончательном уравнении опять присутствуют значения параметра в концах сегментов и . Полученную формулу можно обобщить для точек, и для сегментов кубического сплайна получить непрерывность второго порядка в точках соединения.
Рис. 5-7 Обозначения множества кусочно кубических сегментов сплайна. Обобщенное уравнение для двух любых соседних сегментов сплайна и в обозначениях рис. 5-7 имеет вид:
(5-11) для первого сегмента и
(5-12) для второго, так как для каждого сегмента параметр начинает изменяться с нуля, для первого и для второго - . Приравнивание вторых производных в точках стыковки для любых соседних сегментов, , дает общий результат, эквивалентный уравнению (5-10),
, , (5-13) откуда определяется касательный вектор в точках соединения любых двух сегментов и . Рекурсивное использование уравнения (5-13) для всех сегментов сплайна порождает уравнений касательных векторов , . В матричной форме:
(5-14) или . Матрица неквадратная, так как имеется только уравнений для векторов, и ее нельзя обратить и получить решение для . Если предположить, что известны касательные векторы на концах кривой и , проблема разрешается. Теперь матрица имеет вид
(5-15) или , где матрица квадратная и обратимая. Заметим также, что трехдиагональная, что снижает вычислительные затраты на ее обращение. Далее, матрица диагонально доминантная. Отсюда следует, что у нее существует единственное решение: . (5-16) Если нам известны , то легко определить коэффициенты для каждого сегмента сплайна. Обобщая уравнения (5-6)-(5-11), получим , , , . Так как и - это векторные величины, то и тоже векторные; если и имеют , , составляющие, значит, и также имеет эти составляющие. В матричной форме уравнение любого сегмента сплайна таково:
. (5-17) Пусть требуется задать кубический сплайн, проходящий через точек , с касательными векторами на концах и . Из уравнения (5-16) находим внутренние касательные векторы , . Затем из уравнения (5-17) с известными координатами концов каждого сегмента и касательными векторами определяются , , для каждого сегмента. Окончательное обобщение уравнения (5-1) , , , (5-18) используется для расчета сегмента сплайна. В матричном виде уравнение (5-18) выглядит следующим образом: , . (5-19) Подставляя уравнение (5-17) и перегруппируя члены, получим , , , (5-20) где
, (5-21a) , (5-21b) , (5-21с) , (5-21d) называются весовыми функциями.
Рис. 5-8 Весовые функции кубического сплайна для Пользуясь этими определениями, запишем уравнение (5-20) в матричном виде , (5-22) где - матрица весовой функции (5-23) и (5-24) содержит геометрическую информацию. Как будет видно из дальнейшего, уравнения типа (5-22), т.е. матрица весовой функции, умноженная на матрицу геометрических условий, часто применяются для описания кривых и поверхностей. Из уравнения (5-21) видно, что каждая весовая функция имеет третий порядок. Любая точка на сегменте кубического сплайна это взвешенная сумма конечных точек и касательных векторов. Коэффициенты выступают в роли весовых функций. На рис. 5-8 изображены для . Из рисунка видно, что и , т.е. кривая проходит через вектор-точку . Аналогично и , т.е. кривая также проходит через вектор-точку . Далее отметим симметрию и , и и . Фактически . Наконец, обратим внимание на относительный порядок , , и . Значительная разница величин говорит о том, что в общем случае положение конечных точек имеет большее влияние, чем касательные векторы. Вспомним, что кусочный кубический сплайн определяется точками, векторами касательных и величинами параметра, т. е. в концах всех сегментов. Выбор влияет на гладкость кривой. Непрерывность второй производной в точках внутреннего соединения сама по себе не обеспечивает гладкости кривой в смысле минимальности кривизны вдоль нее. Подбирая соответствующие значения, можно минимизировать коэффициенты и для каждого сегмента и достичь большей гладкости кривой. Обычно эти дополнительные вычисления не требуются. Для практических целей применяются более простые методы, наподобие рассмотренных здесь. Один метод вычисления - установить величины параметров равными длинам хорд между соседними точками. При этом качество кривой удовлетворяет требованиям большинства прикладных задач. Другой метод состоит в том, что для нормализации вариации полагается равным единице у каждого сегмента сплайна. Такой выбор упрощает вычисления (см. разд. 5-4). Как видно из приведенных выше уравнений, любой выбор приводит к другим коэффициентам, и, следовательно, получаются различные кривые, проходящие через заданные точки. Рассмотрим пример.
Хотя из весовых функций (см. (5-21)) видно, что касательные векторы в концах меньше влияют на форму сплайна, чем положение концевых точек, их эффект может оказаться значительным. На рис. 5-10 изображен один симметричный сегмент сплайна с одинаковым направлением касательных векторов, но разной величины. Направления касательных векторов обозначены углом , а их относительная величина - длиной этих векторов. Если величина значительно меньше длины хорды , то кривая выпукла на концах и лежит внутри треугольника из хорды и касательных. При возрастании величины кривая постепенно становится вогнутой и выходит за треугольник. В этом случае при величине вектора у кривой появляется вершина (см. рис. 5-10d). При еще больших величинах появляется петля, как видно из рис. 5-10е. Иногда для улучшения формы кривой величина вектора ограничивается длиной хорды.
|
1 |
Оглавление
|