Модуль 1 «Математические модели геометрических объектов» Лекция 6 «Другие способы представления поверхностей» к.ф.-м.н., доц. каф. ФН-11, Захаров Андрей Алексеевич, ауд.:930а(УЛК) моб.: 8-910-461-70-04, email: [email protected] МГТУ им. Н.Э. Баумана 6 апреля 2016 г. Линейчатые поверхности ГОЛОВАНОВ СТР. 158-169 Линейчатая поверхность — геометрическое место точек отрезков прямых, соединяющих соответствующие друг друг точки двух заданных кривых. Пусть c1 (u), u0 6 u 6 u1 , и c2 (v), v0 6 v 6 v1 , — две заданные кривые. Тогда определяемая ими линейчатая поверхность имеет вид r(t, τ ) = (1 − τ )c1 (u) + τ c2 (v), где u = u0 (1 − t) + u1 t; v = v0 (1 − t) + v1 t, 0 6 t, τ 6 1. Если обе кривые c1 и c2 замкнуты, то линейчатая поверхность замкнута по t. По параметру τ линейчатая поверхность всегда незамкнута. Каркасные линии r(ti , τ ) являются отрезками прямых, а линии r(t, τj ) образуют систему полиморфных кривых, переходящих от линии c1 к линии c2 . Линейчатые поверхности Секториальная поверхность — частный случай линейчатой поверхности, когда одна из кривых c1 или c2 вырождается в точку p: r(t, τ ) = (1 − τ )c(t) + τ p, где c(t) — кривая; p — точка, t1 6 t 6 t2 , 0 6 τ 6 1. Поверхности Кунса. Линейные поверхности Кунса Пусть заданы четыре кривые c1 , c2 , c3 , c4 , образующие криволинейный четырёхугольник с углами в точках p1 , p2 , p3 , p4 : c1 (t) = r(t, 0), 0 6 t 6 1; c1 (0) = r(0, 0) = p1 ; c1 (1) = r(1, 0) = p2 ; c2 (t) = r(t, 1), 0 6 t 6 1; c2 (0) = r(0, 1) = p3 ; c2 (1) = r(1, 1) = p4 ; c3 (τ ) = r(0, τ ), 0 6 τ 6 1; c3 (0) = r(0, 0) = p1 ; c3 (1) = r(0, 1) = p3 ; c4 (τ ) = r(1, τ ), 0 6 τ 6 1; c4 (0) = r(1, 0) = p2 ; c4 (1) = r(1, 1) = p4 ; Обозначим: α0 (t) = 1 − t, α1 (t) = t — функции, которые будем называть функциями смешения линейной поверхности Кунса. Сама линейная поверхность Кунса определяется следующей формулой: r(t, τ ) = f (t, τ ) − α0 (t)[f (0, τ ) − c3 (τ )] − α1 (t)[f (1, τ ) − c4 (τ )], f (t, τ ) = α0 (τ )c1 (t) + α1 (τ )c2 (t). (1) Поверхности Кунса. Линейные поверхности Кунса Линейная поверхность Кунса, вообще говоря, не является линейчатой поверхностью. Название «линейная» обусловлено тем, что в её определении используются линейные функции смешения α0 (t) и α1 (t). Параметрическая область поверхности Кунса может иметь вид прямоугольника, не обязательно совпадающего с квадратом [0, 1] × [0, 1]. Преобразуем формулу (1) к другому виду. Имеем в матричных обозначениях: r(0, τ ) r(t, 0) r(t, τ ) = α0 (t) α1 (t) + α0 (τ ) α1 (τ ) − r(1, τ ) r(t, 1) r(0, 0) r(0, 1) α0 (τ ) − α0 (t) α1 (t) = r(1, 0) r(1, 1) α1 (τ ) = 1 X i=0 αi (t)r(i, τ ) + 1 X j=0 αj (τ )r(t, j) − 1 X 1 X i=0 j=0 αi (t)αj (τ )r(i, j). Поверхности Кунса. Обобщённые поверхности Кунса При стыковке линейных поверхностей Кунса по граничным кривым производные в направлении, ортогональном границе, претерпевают разрыв. Чтобы гладко склеивать поверхности Кунса необходимо строить их таким образом, чтобы они имели на границе заданные (согласованные) производные до k-го порядка включительно. Производные в касательном направлении определяются уравнениями самих граничных кривых, а производные в трансверсальном к границе направлении необходимо задавать дополнительно. Обобщенной поверхностью Кунса n-го порядка называется поверхность r(t, τ ) = 1 X n X (k) αk,i (t)rt (i, τ ) + i=0 k=0 − 1 X n X αk,j (τ )r(k) τ (t, j)− j=0 k=0 1 X 1 X n X n X (k,l) αk,i (t)αl,j (τ )rtτ (i, j), 0 6 t, τ 6 1, i=0 j=0 k=0 l=0 задаваемая четырьмя граничными кривыми r(t, 0); r(t, 1); r(0, τ ); r(1, τ ); стыкующимися в точках p1 = r(0, 0); p2 = r(1, 0); p3 = r(0, 1) и p4 = r(1, 1), а также чистыми частными производными в трансверсальном направлении на граничных кривых до n-го порядка включительно и смешанными частными производными в угловых точках p1 , p2 , p3 , p4 до 2n-го порядка включительно: Поверхности Кунса. Обобщённые поверхности Кунса ∂ k r(t, τ ) , i = 0, 1; ∂tk t=i ∂ k r(t, τ ) , j = 0, 1; r(k) τ (t, j) = ∂τ k τ =j ∂ kl r(t, τ ) (k,l) rtτ (i, j) = , i, j = 0, 1; ∂tk ∂τ l t=i,τ =j (k) rt (i, τ ) = а также — обобщенными функциями смешения αk,i (t), где 0 6 k 6 n, i = 0, 1, в качестве которых могут быть взяты произвольные гладкие функции, удовлетворяющие соотношениям: ∂ m αk,i (t) 1, если i = j, k = m; j m = = δ δ i k 0, иначе. ∂tm t=j Здесь 0 6 k, m 6 n. Поверхности Кунса. Обобщённые поверхности Кунса. Пример: кубическая поверхность Кунса Определим функции смешения формулами: α0 (t) = 1 − 3t2 + 2t3 ; β0 (t) = t − 2t2 + t3 ; α1 (t) = 3t2 − 2t3 ; β1 (t) = −t2 + t3 (здесь для простоты использованы обозначения: α0,0 (t) = α0 (t); α0,1 (t) = α1 (t); α1,0 (t) = β0 (t); α1,1 (t) = β1 (t)). Пусть заданы четыре кривые r(t, i), r(i, τ ), где i = 0, 1, стыкующиеся в точках r(0, 0), r(0, 1), r(1, 0), r(1, 1). Пусть заданы первые производные на границе в трансверсальном направлении: rt (i, τ ), rτ (t, i), i = 0, 1, и вторые смешанные производные в угловых точках: rt,τ (i, j), i, j = 0, 1. Поверхности Кунса. Обобщённые поверхности Кунса. Пример: кубическая поверхность Кунса Кубическая поверхность Кунса определяется формулой (в матричных обозначениях): r(0, τ ) r(1, τ ) r(t, τ ) = α0 (t) α1 (t) β0 (t) β1 (t) rt (0, τ ) + rt (1, τ ) r(t, 0) r(t, 1) + α0 (τ ) α1 (τ ) β0 (τ ) β1 (τ ) rτ (t, 0) − rτ (t, 1) T r(0, 0) r(0, 1) rτ (0, 0) rτ (0, 1) α0 (t) α0 (τ ) α1 (t) r(1, 0) r(1, 1) rτ (1, 0) rτ (1, 1) α1 (τ ) − β0 (t) rt (0, 0) rt (0, 1) rtτ (0, 0) rtτ (0, 1) β0 (τ ) , rt (1, 0) rt (1, 1) rtτ (1, 0) rtτ (1, 1) β1 (τ ) β1 (t) 0 6 t, τ 6 1. Поверхности, построенные по остову из кривых В проектировании поверхностей иногда применяется метод построения поверхности по дискретной совокупности её сечений. Для затягивания остова, образованного сечениями, гладкой поверхностью, применяются методы, аналогичные построению интерполяционных кривых. Поэтому получаемые таким способом поверхности имеют такие же названия, как и соответствующие интерполяционные сплайны. Поверхности Эрмита Сплайном Эрмита называется кусочно–кубическая кривая, проходящая через заданные точки p0 , . . . , pn и имеющая в этих точках заданные производные p0 0 , . . . , p0 n . Если производные p0 0 , . . . , p0 n не определены, то можно использовать фундаментальные сплайны. Аналогично сплайнам Эрмита строятся поверхности Эрмита. Пусть имеется семейство кривых: r(t, 0) = r0 (t); ... r(t, i) = ri (t); (2) ... r(t, n) = rn (t). Без ограничения общности будем считать, что параметр t для всех кривых пробегает один и тот же отрезок: t0 6 t 6 t1 . Поверхности Эрмита Поверхность Эрмита, затягивающая остов кривых r(t, i), 0 6 i 6 n, определяется формулой, аналогичной формуле для сплайна Эрмита: r(t, τ ) = r(t, j)H0 (w) + r(t, j + 1)H1 (w)+ + rτ (t, j)H2 (w) + rτ (t, j + 1)H3 (w), если j 6 τ 6 j + 1. Здесь w = τ − j — местный параметр на данном участке поверхности (0 6 w 6 1); rτ (t, j) и rτ (t, j + 1) — производные в трансверсальном направлении на заданном остове кривых (2); Hi , i = 0, . . . , 3 — полиномы Эрмита. Параметрическая область поверхности Эрмита имеет вид t0 6 t 6 t1 ; 0 6 τ 6 n. Поверхности Эрмита Если трансверсальные производные rτ (t, i) на линиях остова не заданы, то их, аналогично случаю фундаментальных сплайнов, можно определить, например, так: r(t, j + 1) − r(t, j − 1) r (t, j) = , 1 6 j 6 n − 1; τ 2 r (t, 0) = 2r(t, 1) − 2r(t, 0) − rτ (t, 1); τ rτ (t, n) = 2r(t, n) − 2r(t, n − 1) − rτ (t, n − 1). При таком определении третьи производные на кривых r0 и rn в трансверсальном направлении обратятся в ноль: ∂ 3 r(t, τ ) ∂ 3 r(t, τ ) = = 0. ∂τ 3 τ =0 ∂τ 3 τ =n Поверхности Эрмита имеют класс C 1 . Применение поверхностей Эрмита: поверхность перехода Применение поверхностей Эрмита можно показать на задаче объединения двух поверхностей в общую поверхность путём соединения их краев с помощью поверхности перехода. Пусть даны две поверхности M и N , которые надо сопрячь, соединив поверхностью перехода край r = rM (t, τ1M ) первой поверхности и край r = rN (t, τ0N ) второй поверхности. Будем считать, что оба сопрягаемых края отнесены к одному и тому же параметру t, изменяющемуся в пределах t0 6 t 6 t1 . Второй параметр на поверхностях M и N обозначим (в обоих случаях) через τ : t 0 6 t 6 t1 ; t0 6 t 6 t1 ; τ0M 6 τ 6 τ1M ; τ0N 6 τ 6 τ1N . Без ограничения общности будем считать, что τ1M < τ0N . Тогда поверхность перехода от M к N может быть описана формулой Эрмита: r(t, w) = rM (t, τ1M )H0 (w) + rN (t, τ0N )H1 (w)+ ∂rM (t, τ ) ∂rN (t, τ ) + M H2 (w) + N H3 (w), ∂τ ∂τ τ =τ τ =τ 1 где w = τ − τ1M τ0N − τ1M 0 6 w 6 1. 0 — местный параметр по направлению τ , t0 6 t 6 t1 , Поверхности, затягивающие сетку кривых заплатами Кунса Пусть задан остов поверхности, состоящий из двух семейств кривых в обоих параметрических направлениях, которые образуют сетку — т.е. каждая кривая одного семейства пересекает в одной и только одной точке каждую кривую другого семейства. Различные кривые одного и того же семейства не пересекаются. Обозначим заданную таким образом сетку кривых через r = r(t, 0), . . . , r = r(t, n) — первое семейство; r = r(0, τ ), . . . , r = r(m, τ ) — второе семейство. Здесь 0 6 t 6 m, 0 6 τ 6 n. Тогда радиус-вектор точки пересечения i-й кривой первого семейства с j-й кривой второго семейства будет равен r(i, j), 0 6 i 6 m, 0 6 j 6 n. (3) Поверхности, затягивающие сетку кривых заплатами Кунса Остов, состоящий из сетки кривых (3), можно затянуть поверхностью, состоящей из заплат, затягивающих каждую отдельную ячейку сетки и гладко сопрягающихся между собой. В качестве таких заплат могут выступать поверхности Кунса. Получается следующая поверхность r(i, τ ) r(i + 1, τ ) r(t, τ ) = α0 (u) α1 (u) β0 (u) β1 (u) rt (i, τ ) + rt (i + 1, τ ) r(t, j) r(t, j + 1) + α0 (v) α1 (v) β0 (v) β1 (v) rτ (t, j) − rτ (t, j + 1) − α0 (u) α1 (u) β0 (u) β1 (u) × r(i, j) r(i, j + 1) rτ (i, j) rτ (i, j + 1) α0 (v) r(i + 1, j) r(i + 1, j + 1) rτ (i + 1, j) rτ (i + 1, j + 1) α1 (v) × , × rt (i, j) rt (i, j + 1) rtτ (i, j) rtτ (i, j + 1) β0 (v) rt (i + 1, j) rt (i + 1, j + 1) rtτ (i + 1, j) rtτ (i + 1, j + 1) β1 (v) u = t − i; v = τ − j; 0 6 t 6 m; 0 6 τ 6 n. Здесь u, v ∈ [0, 1) — местные параметры в данной ячейке сетки (3). (4) Поверхности, затягивающие сетку кривых заплатами Кунса Для вычисления радиуса-вектора поверхности с помощью формулы (4), необходимо задать производные на кривых сетки в трансверсальном направлении к этим кривым. По аналогии с фундаментальными сплайнами, это можно сделать, например, по следующим формулам: r(i + 1, τ ) − r(i − 1, τ ) r(t, j + 1) − r(t, j − 1) ; rτ (t, j) = 2 2 при 1 6 t 6 m − 1; 1 6 τ 6 n − 1 (для внутренних линий сетки) и rt (i, τ ) = rt (0, τ ) = 2r(1, τ ) − 2r(0, τ ) − rt (1, τ ); rt (m, t) = 2r(m, τ ) − 2r(m − 1, τ ) − rt (m − 1, τ ); rτ (t, 0) = 2r(t, 1) − 2r(t, 0) − rτ (t, 1); (5) rτ (t, n) = 2r(t, n) − 2r(t, n − 1) − rτ (t, n − 1) для крайних линий сетки. Геометрически это означает, что производная rt (i, τ ) в произвольной точке r(i, τ ) внутренней линии сетки полагается пропорциональной вектору, соединяющему точки r(i − 1, τ ) и r(i + 1, τ ) на соседних с ней линиях сетки, отвечающие тому же значению параметра τ , что и данная точка. Аналогичное утверждение справедливо и для производной rτ (t, j). Так же как и случае кубических сплайнов Эрмита, формулы (5) обеспечивают равенство нулю третьих производных поверхности на границе в трансверсальном к граничной кривой направлении.