Поверхность по сети кривых является ценным инструментом в инженерном проектировании геометрических объектов со сложными обводами. Она образуется двумя семействами кривых, которые взаимно пересекаясь, образуют сетку фрагментов, имеющую матричную структуру. Помимо точного прохождения через свои образующие кривые, поверхность по сети кривых также позволяет задавать для них определенные значения производных, что оказывается очень полезным для обеспечения различных типов граничных условий. На рис. 1 показана поверхность, построенная по двум кривым в каждом направлении, которая использует данное свойство для обеспечения касательного сопряжения с другой поверхностью.
Рис. 1. Поверхность по сети кривых
Два семейства образующих кривых задают соответствующие параметрические изолинии на получаемой поверхности. Так, образующие из семейства uкривых задают на поверхности изолинии с постоянным параметром v=const, а образующие из семейства vкривых задают изолинии с постоянным параметром u=const. Каждая клетка или патч поверхности по сети кривых описывается формой Кунса, которую можно упрощенно записать в таком виде:
r(u,v)=Hu(u,v)+Hv(u,v)+M(u,v) (1).
Первые два слагаемых в формуле (1) представляют собой формы Эрмита по каждому направлению. Каждая форма Эрмита обеспечивает прохождение поверхности через опорные кривые трансверсального направления. Так, кубическая форма Эрмита по uнаправлению обеспечивает прохождение через кривые vсемейства (рис. 2), а форма Эрмита по vнаправлению обеспечивает прохождение через кривые uсемейства (рис. 3).
Рис. 2. Форма Эрмита в направлении u обеспечивает прохождение через v-кривые
Рис. 3. Форма Эрмита в направлении v обеспечивает прохождение через u-кривые
Кубические формы Эрмита задаются в виде
(2),
где α1, α2, β1, β2 — функции Эрмита, определенные на рассматриваемом диапазоне параметров;
U1(u), U2(u), V1(v), V2(v) — опорные кривые, ограничивающие патч поверхности;
Uv1(u), Uv2(u), Vu1(v), Vu2(v) — «поток» первой производной через границы патча.
Для простоты изложения здесь подразумевается, что параметризация опорных кривых совпадает с параметризацией поверхности. На практике такого, как правило, не наблюдается, поэтому выполнение данного условия достигается за счет репараметризации исходных кривых. Исходя из свойств функции Эрмита, видно, что, помимо геометрического прохождения через опорные кривые, формы Эрмита также задают на границах «потоки» трансверсального вектора (Vu для vграниц и Uv для uграниц).
Для того чтобы Эрмитовы формы первого направления не вносили вклада в результат вычисления на границах для второго направления, в форму Кунса вводится третье слагаемое, которое для кубической формы записывается следующим образом:
(3.1),
где
(3.2),
или с учетом совпадения поверхности с образующими кривыми на границах патча:
(3.3).
Из структуры матрицы M0 видно, что элементы первых двух строчек и первых двух столбцов точно определяются образующими кривыми, а остальные элементы представляют смешанные производные, которые должны быть тем или иным образом заданы. Они могут быть выбраны как постоянными, так и зависящими от параметров u и v. Это будет зависеть от формы, в которой будут задаваться функции «потока». Детально этот вопрос будет рассмотрен далее, сейчас же просто отметим свойство смешанных компонентов, требуемое для сокращения функции M(u,v) с Эрмитовой формой Hu(u,v) на uграницах и с Эрмитовой формой Hv(u,v) на vграницах. Рассмотрев границу v=vmin, это свойство можно записать в следующем виде (подразумевается, что элементы матрицы M0 могут зависеть от параметров u и v):
(4).
Непосредственной подстановкой можно убедиться, что оно обеспечивает сохранность трансверсального вектора Uv1 на границе v=vmin. Подобные же условия можно получить и для остальных границ патча. Таким образом, подводя итог, можно сказать, что форма Кунса обладает следующими свойствами на своих границах:
для v=vmin,
для v=vmax
(5)
для u=umin,
для u=umax
для любого порядка дифференцирования n.
Очевидно, что форма Кунса может строиться на формах Эрмита разной степени, начиная с линейной формы. В этом смысле формы Эрмита могут иметь разный порядок для направлений u и v. На наш взгляд, без надобности использовать формы более высокого порядка нет смысла. К примеру, кубическая форма Эрмита по u оправдана, если поверхность содержит несколько клеток в этом направлении или если задано сопряжение по первой производной на какойлибо из vграниц. Если же ни того, ни другого нет, то достаточно использовать линейную форму. Использование же бикубической формы Эрмита по u
(6)
оправдано, если требуется обеспечить гладкую (С2) стыковку между патчами по uнаправлению или сопряжение по второй производной на vграницах.
Рис. 4. Функции «потока» для патча поверхности
После краткого обзора поверхности перейдем теперь к методике расчета функций «потока» (рис. 4). Функция «потока» может быть получена:
- Путем интерполяции сеточных данных по формулам Эрмита между узлами сетки.
- Путем непосредственного задания для соответствующих опорных кривых.
Сразу скажем, что второй вариант автор статьи пока не пробовал. Однако очевидно, что такой подход обладает рядом преимуществ, хотя технически и более сложен. Нпример, он позволяет сделать закон «потока» более гибким с точки зрения подстраивания под форму поверхности. Под этим подразумевается возможность задания дополнительных значений вектора во внутренних точках интервала помимо узлов сетки. Данные значения можно найти, например, исходя из решения задачи минимизации функционала кривизны для поверхности. Использование же первого интерполяционного подхода может приводить к неожиданной искривленности или ребристости поверхности, особенно при повышении порядков форм Эрмита или при редкой расстановке образующих кривых. Также явное задание функций «потока» убирает проблему задания узловых смешанных производных, поскольку последние теперь вычисляются непосредственно через сами функции.
Рассмотрим теперь метод получения функции «потока» методом интерполяции сеточных данных. Данная методика весьма проста. На примере границы v=vmin рассмотрим «поток» вектора первой производной Uv1(u). Исходя из свойств формы Кунса, в начальной и конечной точках границы вектор потока равен
(7).
Порядок интерполяции будет определяться степенью формы Эрмита в направлении u. Если используется линейная форма, то этих данных будет достаточно для составления функции «потока».
(8).
Если же форма кубическая, то необходимо задание дополнительных величин в узлах сетки, которые имеют смысл смешанных производных. В этом случае функция «потока» запишется как
(9).
Использование бикубического закона приводит к введению еще одной смешанной производной.
(10).
В том, что дополнительно вводимые величины имеют характер смешанных производных, можно непосредственно убедиться, рассчитав соответствующие производные формы Кунса (1) с использованием равенств (2), (3) и (810). Поэтому, зная их геометрический смысл, можно поискать подход к их адекватному определению. Автор данной статьи использует конечноразностный подход, при котором расчет смешанной производной выполняется по четырехточечному шаблону в некоторой окрестности узла сетки на базе формы Кунса более низкого порядка, для которой не требуется знания данного узлового параметра. Для примера: смешанную производную ruv можно найти через поверхность, составленную из линейных форм. Это будет выглядеть следующим образом:
(11).
Методика получения функции «потока» для второй производной концептуально ничем не отличается от описанной методики для первой производной. Для бикубической формы Эрмита она запишется как
(12).
Единственное, что введение в расчет функций высоких степеней может быть весьма чувствительным к выбору старших смешанных производных, поэтому степени форм Эрмита лучше разделять и использовать максимально низкие допустимые порядки для конкретной поверхности.
Поскольку функция «потока» может применяться в том числе и для удовлетворения различных граничных условий, особое внимание следует уделить этому вопросу. Более того, можно сказать, что данный момент является наиболее сложным в математике поверхности по сети кривых. Говоря о граничных условиях, мы имеем в виду, что поверхность по сети кривых может различным образом стыковаться с другой поверхностью через свою граничную кривую. В этом случае очевидно, что данная граница должна иметь представление поверхностной кривой на указанной поверхности. Мы рассмотрим касательное сопряжение и сопряжение по кривизне. Сопряжение по нормали мы рассматривать не будем, поскольку оно принципиально не отличается от сопряжения по касательной. На примере той же границы v=vmin рассмотрим вектор потока Uv1(u). Очевидно, что вектор, рассчитанный по формулам (8), (9) или (10), не обязан удовлетворять граничным условиям сопряжения, поэтому здесь требуется более сложный расчет. В данном случае можно выделить два принципиально разных подхода:
1 Первый подход базируется на применении к «функции» потока Uv1(u) ограничений.
2 Второй подход базируется на смене объекта интерполяции. Если в первом методе интерполировались глобальные компоненты x, y и z вектора Uv1(u), то во втором интерполируются тангенциальные, нормальные и бинормальные компоненты вектора «потока» с последующим переводом их в глобальную систему координат. Здесь следует уточнить, что тангенциальная компонента направлена вдоль границы сопряжения, нормальная — по нормали к поверхности сопряжения, а бинормальная — перпендикулярно границе в касательной плоскости. Очевидно, что такая интерполяция естественным образом сохраняет условия касательности. Более того, такая интерполяция гарантирует сохранение знака бинормальной компоненты вектора «потока», чего нельзя сказать про глобальную интерполяцию, которая более непредсказуема в этом отношении.
Рассмотрим теперь первый подход более подробно. По сути, условие касательности для него сводится к исключению нормальной компоненты из вектора «потока».
(13).
Кроме того, он налагает ограничения на значения узловых смешанных производных, которые используются в формулах (9) и (10) для расчета вектора Uv1(u). Из условия (13) следует, что
Uv1·n=0.
Данное тождество означает также и тождественность нулю всех производных данного выражения по u
.
Отсюда следует, что нормальная компонента узловой смешанной производной ruv на границе должна удовлетворять равенству
(14).
Двойное дифференцирование равенства (14) дает ограничение на нормальную составляющую смешанной производной ruuv
(15).
Равенства (1315) задают формулы для расчета функции «потока» первой производной для выполнения условия касания, а также ограничения, налагаемые на смешанные производные в узлах сетки. На рис. 5 показана модель с применением сопряжения по первой производной на двух границах.
Рис. 5. Пример сопряжения по первой производнойs
Далее рассмотрим условия сопряжения по кривизне. Данное сопряжение обеспечивается благодаря коррекции вектора «потока» второй производной (12), нормальная составляющая которого должна иметь строго определенное значение.
(16),
где k — нормальная кривизна поверхности, рассчитанная в направлении вектора Uv1(u). Таким образом, вектор потока второй производной должен быть представлен в виде двух слагаемых, первое из которых исключает нормальную составляющую от интерполированного вектора, а второе задает требуемое значение для этой составляющей:
(17).
Узловые смешанные производные по аналогии со случаем первой производной должны удовлетворять следующим условиям:
(18).
На рис. 6 показан пример модели с использованием сопряжения по кривизне.
Рис. 6. Пример сопряжения по второй производной
Второй метод интерполирования, как уже было сказано, применяется к компонентам вектора в локальной системе координат. Иными словами, требуется построить функцию «потока» в локальной системе координат. С этой целью (на примере той же самой границы v=vmin) необходимо перевести узловые трансверсальные вектора rv и их производные ruv и ruuv из глобальной в локальную систему координат. По полученным векторам и их производным по аналогии с формулами (810) строится функция Эрмита применительно к локальному базису. Перевод трансверсального вектора и его производной выполняется по следующей формуле:
(19),
где — матрица трансформации, τ — касательный вектор, n — нормальный вектор, b — бинормаль в точке.
Также возможен и другой подход к построению функций «потока» в рамках этого метода интерполяции, который, возможно, в ряде случаев более практичен. Он заключается в обратной последовательности построения, когда сперва строится функция «потока» в локальной системе координат на базе значений вектора «потока» в узловых точках, а уже на базе этой функции определяются смешанные производные в узлах сетки в глобальной системе координат путем перевода из локального базиса.
Изучив описанные два метода построения функций «потока», у читателя может возникнуть справедливый вопрос, какой же способ интерполяции лучше использовать. И здесь однозначного ответа нет. Дело в том, что всегда будут модели, для которых один из методов будет давать существенно худшие результаты, чем другой. Казалось бы, можно просто остановить выбор на одном из них, однако целесообразно сделать еще один шаг вперед и ввести критерий, согласно которому можно будет понять, какой метод предпочтительнее на конкретном участке границы. Для этого можно рассмотреть на границе сопряжения две близко расположенные друг к другу точки (рис. 7). Вектора «потока», восстановленные в этих двух точках, пересекаются на некотором расстоянии от границы сопряжения, при помощи которого можно оценить тенденцию функции «потока» к самопересечению.
Рис. 7. К расчету критерия оценки способа интерполяции
Сокращая расстояние между двумя близкими точками, можно получить представление данного критерия в дифференциальном виде. Пропустив промежуточные выкладки в целях экономии места и времени, перейдем непосредственно к результату:
(20).
По величине данного критерия можно понять, какой способ интерполяции окажется лучше. Лучший метод будет давать наибольшее расстояние «самопересечения» в наихудшей точке.
Описав методики построения функций «потока» для первой и второй производных, нам следует вернуться к проблеме, поднятой в начале статьи, которая связана с условиями, налагаемыми на смешанные компоненты в матрице М(u,v). Мы говорим о неоднозначности определения смешанных компонентов в узлах сетки. В идеальном случае производные функции «потока» разных направлений должны давать одинаковые производные при дифференцировании. А именно:
(21).
Однако если функции «потока» в силу тех или иных причин дают различающиеся производные в узлах сетки, то данные равенства выполняться не будут. Это может происходить, например, в следующих случаях:
- в угловых точках сходятся две границы сопряжения, для которых рассчитываются различные смешанные производные;
- на границе сопряжения из какихлибо соображений выполняется разделение смешанных производных;
- функции «потока» задаются явно и ничего друг о друге не знают.
В этих случаях возникает неоднозначность в выборе смешанных компонентов матрицы M0 (3), если рассматривать их как постоянные величины, не зависящие от параметров u и v. Обойти это ограничение и обеспечить свойство, сформулированное в формуле (4), можно благодаря определенному функциональному представлению элементов матрицы M0. Суть данного представления можно объяснить на примере «нижнего левого» угла (umin, vmin) патча поверхности. Если представить, что нарушено равенство в силу какойлибо из причин, перечисленных выше, то свойства формы Кунса все равно можно обеспечить, если найти такую функцию M033(u,v), что
(22).
В качестве таковой можно взять, например, следующую функцию:
(23).
В этом случае на границах v=vmin и v=vmax форма Кунса будет определяться формой Эрмита Hv (u,v), а на границах u=umin и u=umax — формой Эрмита
Hv (u,v). Поскольку теперь матрица M0 является функцией параметров u и v, то расчет производных для третьего слагаемого формы Кунса (3) становится более сложным:
(24).
В выражении (24) первые слагаемые для принятого вида функции M033(u,v) обеспечивают удовлетворение граничных условий патча, а вторые слагаемые на границах u=umin и v=vmin равны нулю в силу свойств функций Эрмита и их производных, поэтому в сумме значения функции «потока» для первой производной будут сохранены. На рис. 8 показана модель с касательными сопряжениями на всех четырех границах поверхности.
Рис. 8. Модель с сопряжениями на всех границах
При использовании бикубической формы Эрмита встает вопрос о расчете вторых производных для третьего слагаемого формы Кунса (3):
(25).
В выражении (25) видно, что первые слагаемые для принятого вида функции M033(u,v) обеспечивают удовлетворение граничных условий, а часть последующих слагаемых на границах u=umin и v=vmin равны нулю в силу свойств функций Эрмита и их производных. Однако помимо них в выражении (25) остаются также и ненулевые слагаемые. К счастью, их можно исключить, если функцию M033(u,v) выбрать в несколько ином виде, для которого ее частные производные обращаются в ноль на соответствующих границах патча:
{26).
Можно убедиться, что такой вид функции M033(u,v) обеспечивает для нее на границах u=umin и v=vmin частные производные равные нулю. Поэтому уравнения (26) принимают следующий вид:
(27),
что обеспечивает сохранность функции «потока» для второй производной на границах патча.
На этом краткий обзор поверхности по сети кривых можно завершить. В данной статье нами были озвучены общие идеи, заложенные в основе математики поверхности. Ряд выкладок и пояснений был опущен, исходя из предположения о наличии у читателя некоторой математической базы, а также в надежде на исследовательскую пытливость, которую он сможет самостоятельно проявить, чтобы составить все недостающие формулы.