20.12.2022

Поверхность по сети кривых

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

Рисунок 1. Поверхность по сети кривых

Два семейства образующих кривых задают соответствующие параметрические изолинии на получаемой поверхности. Так образующие из семейства u-кривых задают на поверхности изолинии с постоянным параметром v=const, а образующие из семейства v-кривых задают изолинии с постоянным параметром u=const. Каждая клетка или патч поверхности по сети кривых описывается формой Кунса, которую можно упрощенно записать в виде

Первые два слагаемых в формуле (1) представляют собой формы Эрмита по каждому направлению. Каждая форма Эрмита обеспечивает прохождение поверхности через опорные кривые трансверсального направления. Так кубическая форма Эрмита по u направлению обеспечивает прохождение через кривые v-семейства (рисунок 2),

Рисунок 2. Форма Эрмита в направлении u обеспечивает прохождение через v-кривые.

а форма Эрмита по v направлению обеспечивает прохождение через кривые u-семейства (рисунок 3).

Рисунок 3. Форма Эрмита в направлении v обеспечивает прохождение через u-кривые.

Кубические формы Эрмита задаются в виде

, где α1, α2, β1, β2 — функции Эрмита, определенные на рассматриваемом диапазоне параметров;
U1(u), U2(u), V1(v), V2(v) — опорные кривые, ограничивающие патч поверхности;
Uv1(u), Uv2(u), Vu1(v), Vu2(v) — «поток» первой производной через границы патча.

Для простоты изложения здесь подразумевается, что параметризация опорных кривых совпадает с параметризацией поверхности. На практике такого как правило не наблюдается, поэтому выполнение данного условия достигается за счет репараметризации исходных кривых. Исходя из свойств функции Эрмита, видно, что помимо геометрического прохождения через опорные кривые, формы Эрмита также задают на границах «потоки» трансверсального вектора (Vu для v-границ и Uv для u-границ)

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

, где

или с учетом совпадения поверхности с образующими кривыми на границах патча:

Из структуры матрицы M0 видно, что элементы первых двух строчек и первых двух столбцов точно определяются образующими кривыми, а остальные элементы представляют смешанные производные, которые должны быть тем или иным образом заданы. Они могут быть выбраны, как постоянными, так и зависящими от параметров u и v. Это будет зависеть от формы, в которой будут задаваться функции «потока». Детально этот вопрос будет рассмотрен далее, сейчас же просто отметим свойство смешанных компонент, требуемое для сокращения функции M(u,v) с Эрмитовой формой Hu(u,v) на u-границах и с Эрмитовой формой Hv(u,v) на v-границах. Рассмотрев границу v=vmin, это свойство запишется в следующем виде (подразумевается, что элементы матрицы M0 могут зависеть от параметров u и v)

Непосредственной подстановкой можно убедится, что оно обеспечивает сохранность трансверсального вектора Uv1 на границе v=vmin. Подобные же условия можно получить и для остальных границ патча. Таким образом, подводя итог, можно сказать, что форма Кунса обладает следующими свойствами на своих границах

для любого порядка дифференцирования n.

Очевидно, что форма Кунса может строится на формах Эрмита разной степени, начиная с линейной формы. В этом смысле, формы Эрмита могут иметь разный порядок для направлений u и v. На наш взгляд, без надобности использовать формы более высокого порядка нет смысла. К примеру, кубическая формы Эрмита по u оправдана, если поверхность содержит несколько клеток в этом направления, или если задано сопряжение по первой производной на какой-либо из v-границ. Если же ни того, ни другого нет, то достаточно использовать линейную форму. Использование же бикубической формы Эрмита по u

оправдано, если требуется обеспечить гладкую (С2) стыковку между патчами по u направлению или сопряжение по второй производной на v-границах.

После краткого обзора поверхности перейдем теперь к методике расчета функций «потока» (рисунок 4). Функция «потока» может быть получена:

1) путем интерполяции сеточных данных по формулам Эрмита между узлами сетки.

2) путем непосредственного задания для соответствующих опорных кривых.

Рисунок 4. Функции «потока» для патча поверхности.

Сразу скажем, что второй вариант пока не пробовался автором статьи. Однако, очевидно, что такой подход обладает рядом преимуществ, хотя технически и более сложен. Так, например, он позволяет сделать закон «потока» более гибким с точки зрения подстраивания под форму поверхности. Под этим подразумевается возможность задания дополнительных значений вектора во внутренних точках интервала помимо узлов сетки. Данные значения можно найти, например, исходя из решения задачи минимизации функционала кривизны для поверхности. Использование же первого интерполяционного подхода, может приводить к неожиданной искривленности или ребристости поверхности, особенно при повышении порядков форм Эрмита или при редкой расстановке образующих кривых. Также явное задание функций «потока» убирает проблему задания узловых смешанных производных, поскольку последние теперь вычисляются непосредственно через сами функции.

Рассмотрим теперь метод получения функции «потока» методом интерполяции сеточных данных. Данная методика весьма проста. На примере границы v=vmin рассмотрим «поток» вектора первой производной Uv1(u). Исходя из свойств формы Кунса, в начальной и в конечной точках границы вектор потока равен

Порядок интерполяции будет определятся степенью формы Эрмита в направлении u. Если используется линейная форма, то этих данных будет достаточно для составления функции «потока».

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

Использование бикубического закона приводит к введению еще одной смешанной производной.

В том, что дополнительно вводимые величины имеют характер смешанных производных, можно непосредственно убедиться, рассчитав соответствующие производные формы Кунса (1) с использованием равенств (2), (3) и (8-10). Поэтому, зная их геометрический смысл, можно поискать подход к их адекватному определению. Автор данной статьи использует конечно-разностный подход, при котором расчет смешанной производной выполняется по четырех-точечному шаблону в некоторой окрестности узла сетки на базе формы Кунса более низкого порядка, для которой не требуется знания данного узлового параметра. Для примера, смешанную производную ruv можно найти через поверхность, составленную из линейных форм. Это будет выглядеть следующим образом

Методика получение функции «потока» для второй производной концептуально ничем не отличается от описанной методики для первой производной. Для бикубической формы Эрмита она запишется, как

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

Поскольку функция «потока» может использоваться в том числе и для удовлетворения различных граничных условий, особое внимание следует уделить этому вопросу. Более того, можно сказать, что данный момент является наиболее сложным в математике поверхности по сети кривых. Говоря о граничных условиях, мы имеем ввиду, что поверхность по сети кривых может различным образом стыковаться с другой поверхностью через свою граничную кривую. В этом случае, очевидно, что данная граница должна иметь представление поверхностной кривой на указанной поверхности. Мы рассмотрим касательное сопряжение и сопряжение по кривизне. Сопряжение по нормали мы не будем рассматривать, поскольку оно принципиально не отличается от сопряжения по касательной. На примере той же границы v=vmin рассмотрим вектор потока Uv1(u). Очевидно, что вектор, рассчитанный по формулам (8), (9) или (10), не обязан удовлетворять граничным условиям сопряжения, поэтому здесь требуется более сложный расчет. Здесь можно выделить два принципиально разных подхода:

1) Первый подход базируется на применении к «функции» потока Uv1(u) ограничений.

2) Второй подход базируется на смене объекта интерполяции. Если в первом методе интерполировались глобальные компоненты x, y и z вектора Uv1(u), то во втором способе интерполируются тангенциальные, нормальные и бинормальные компоненты вектора «потока» с последующим переводом их в глобальную систему координат. Здесь следует уточнить, что тангенциальная компонента направлена вдоль границы сопряжения, нормальная — по нормали к поверхности сопряжения, а бинормальная — перпендикулярно границе в касательной плоскости. Очевидно, что такая интерполяция естественным образом сохраняет условия касательности. Более того, такая интерполяция гарантирует сохранение знака бинормальной компоненты вектора «потока», чего нельзя сказать про глобальную интерполяцию, которая более непредсказуема в этом отношении.

Рассмотрим теперь первый подход более подробно. По сути, условие касательности для него сводится к исключению нормальной компоненты из вектора «потока».

Кроме того, он накладывает ограничения на значения узловых смешанных производных, которые используются в формулах (9-10) для расчета вектора Uv1(u). Из условия (13) следует, что

Данное тождество означает также и тождественность нулю всех производных данного выражения по u

Откуда следует, что нормальная компонента узловой смешанной производной ruv на границе должна удовлетворять равенству

Двойное дифференцирование равенства (14) дает ограничение на нормальную составляющую смешанной производной ruuv

Равенства (13-15) задают формулы для расчета функции «потока» первой производной для выполнения условия касания, а также ограничения, накладываемые на смешанные производные в узлах сетки. На рисунке 5 показана модель с применением сопряжения по первой производной на двух границах.

Рисунок 5. Сопряжение по первой производной. Пример.

Далее рассмотрим условия сопряжения по кривизне. Данное сопряжение обеспечивается благодаря коррекции вектора «потока» второй производной (12), нормальная составляющая которого должна иметь строго определенное значение.

, где k — нормальная кривизна поверхности, рассчитанная в направлении вектора Uv1(u). Таким образом, вектор потока второй производной должен быть представлен в виде двух слагаемых, первое из которых исключает нормальную составляющую от интерполированного вектора, а второе задает требуемое значение для этой составляющей:

Узловые смешанные производные по аналогии со случаем первой производной должны удовлетворять следующим условиям:

На рисунке 6 показан пример модели с использованием сопряжения по кривизне.

Рисунок 6. Сопряжение по второй производной. Пример.

Второй метод интерполирования, как уже было сказано, применяется к компонентам вектора в локальной системе координат. Иными словами, для нее требуется построить функцию «потока» в локальной системе координат. Для этого (на примере той же самой границы v=vmin) необходимо перевести узловые трансверсальные вектора rv и их производные ruv и ruuv из глобальной в локальную систему координат. По полученным векторам и их производным по аналогии с формулами (8-10) строится функция Эрмита применительно к локальному базису. Перевод трансверсального вектора и его производной выполняется по формуле

, где  матрица трансформации, τ — касательный вектор, n — нормальный вектор, b — бинормаль в точке.

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

Изучив описанные два метода построения функций «потока», у читателя может возникнуть справедливый вопрос, какой же способ интерполяции лучше использовать. И здесь однозначного ответа нет. Дело в том, что всегда будут модели, для которых каждый из методов будет давать существенно худшие результаты, чем второй. Казалось бы, на этом можно просто остановить выбор на одном из них, однако можно сделать еще один шаг вперед и ввести критерий, согласно которому можно будет понять, какой метод будет предпочтительнее на конкретном участке границы. Для этого можно рассмотреть на границе сопряжения две близко расположенные друг к другу точки (рисунок 7). Вектора «потока», восстановленные в этих двух точках, пересекаются на некотором расстоянии от границы сопряжения, при помощи которого можно оценить тенденцию функции «потока» к самопересечению.

Рисунок 7. К расчету критерия оценки способа интерполяции.

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

По величине данного критерия можно сказать, какой способ интерполяции будет лучше. Лучший метод будет давать наибольшее расстояние «самопересечения» в наихудшей точке.

Описав методики построения функций «потока» для первой и для второй производных, нам следует вернуться в проблеме, поднятой в начале статьи, связанной с условиями накладываемыми на смешанные компоненты в матрице М(u,v). Она связана с неоднозначностью определения смешанных компонент в узлах сетки. В идеальном случае производные функции «потока» разных направлений должны давать одинаковые производные при дифференцировании. А именно

Однако, если функции «потока» в силу тех или иных причин дают различающиеся производные в узлах сетки, данные равенства не будут выполняться. Это может происходить, например, в следующих случаях:

1) в угловых точках сходятся две границы сопряжения, для которых рассчитываются различные смешанные производные;

2) на границе сопряжения из каких-либо соображений выполняется разделение смешанных производных;

3) функции «потока» задаются явно, и ничего друг о друге не знают.

В этих случаях возникает неоднозначность в выборе смешанных компонент матрицы M0 (3), если рассматривать их как постоянные величины, не зависящие от параметров u и v. Обойти это ограничение и обеспечить свойство, сформулированное в формуле (4), можно благодаря определенному функциональному представлению элементов матрицы M0. Суть данного представления можно объяснить на примере «нижнего левого» угла (umin,vmin) патча поверхности. Если представить, что нарушено равенство в силу какой-либо из причин, перечисленных выше, то свойства формы Кунса все равно можно обеспечить, если найти такую функцию M033(u,v), что

В качестве такой функции можно взять, например, функцию:

В этом случае на границах v=vmin и v=vmax форма Кунса будет определяться формой Эрмита Hv(u,v), а на границах u=umin и u=umax — формой Эрмита Hu(u,v). Поскольку теперь матрица M0 является функцией параметров u и v, то расчет производных для третьего слагаемого формы Кунса (3) становится более сложным:

В выражении (24) первые слагаемые для принятого вида функции M033(u,v) обеспечивают удовлетворение граничных условий патча, а вторые слагаемые на границах u=umin и v=vmin равны нулю в силу свойств функций Эрмита и их производных, поэтому в сумме значения функции «потока» для первой производной будут сохранены. На рисунке 8 показана модель с касательными сопряжениями на всех четырех границах поверхности.

Рисунок 8. Модель с сопряжениями на всех границах.

При использовании бикубической формы Эрмита встает вопрос о расчете вторых производных для третьего слагаемого формы Кунса (3):

В выражении (25) видно, что первые слагаемые для принятого вида функции M033(u,v) обеспечивают удовлетворение граничных условий, а часть последующих слагаемых на границах u=umin и v=vmin равны нулю в силу свойств функций Эрмита и их производных. Однако помимо них в выражении (25) остаются также и ненулевые слагаемые. К счастью, их можно исключить, если функцию M033(u,v) выбрать в несколько ином виде, для которого ее частные производные обращаются в ноль на соответствующих границах патча:

Можно убедиться, что такой вид функции M033(u,v) обеспечивает для нее на границах u=umin и v=vmin частные производные равные нулю. Поэтому уравнения (26) принимают вид,

что обеспечивает сохранность функции «потока» для второй производной на границах патча.

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

Павел Егоров, ведущий математик-программист C3D Modeler, C3D Labs
Автор:
Павел Егоров
Ведущий математик-программист C3D Modeler, C3D Labs
Поделиться материалом