close

Вход

Забыли?

вход по аккаунту

?

Гладкие пространственные кривые

код для вставкиСкачать
Дано изложение теории кривых в трехмерном пространстве
Теоретические основы компьютерной графики
В.В.Усов
1 Геометрия кривых
1.1 Параметрическая кривая в
R
3
.Длина кривой
Параметрическая кривая
X в пространстве
R
3
,это непрерывное отображение отрезка
[a;b] в
R
3
:
X:[a;b]!R
3
В координатной форме:
X = (x;y;z),где
x;y;z 2 C[a;b].Точка
X(a) называется началом,а точка
X(b) концом кривой.Длина
s(X) кривой
X определяется так.Возьмем разбиение
¢ = fa =
t
0
< t
1
<:::< t
n
= bg.Положим
s(X;¢) =
n¡1
P
i=0
½(X(t
i
);X(t
i+1
)).Тогда
s(X) = sup
¢
(s(X;¢)).Если
s(X) < 1,то кривая
X называется спрямляемой.
1.2 Геометрическое определение кривой
Пусть
X,
Y параметризованные кривые:
X:[a;b]!R
3
,
Y:[c;d]!R
3
.Кривые
X,
Y называют
эквивалентными,
X » Y,если существует такое строго монотонное и непрерывное отображение
':[a;b]![c;d],что
X(t) = Y ('(t)) для всех
t 2 [a;b].Легко видеть,что:1)
X » X;2) если
X » Y
,то
Y » X;3) если
X » Y,
Y » Z,то
X » Z.Геометрической кривой
fXg называют класс
всех кривых эквивалентных
X.Представители этого класса называются параметризациями кривой
fXg.
Если кривая спрямляема,то среди всех параметризаций кривой можно выделить натуральную
параметризацию.Параметризация
X:[0;d]!R
3
кривой
fXg называется натуральной,если
8t 2 [0;d] длина дуги
X:[0;t]!R
3
кривой равна
t.
Пусть
X:[a;b]!R
3
параметризованная кривая.Если
X 2 C
0
([a;b]) и
8t 2 [0;d]
jX
0
(t)j 6= 0,то
кривая называется гладкой.Отметим,что кривая может быть непрерывно дифференцируема,но
не быть гладкой кривой.
Для дифференцируемой кривой длина дуги кривой вычисляется по формуле
s (X[c;d]) =
d
Z
c
jX
0
(t)j dt:
Заметим,что требование непрерывности в определении кривой
X является довольно слабым
ограничением,поскольку
1) Существуют неспрямляемые кривые (рис.1)
Положим
X(t) = ((1 ¡ t) cos(1=(1 ¡ t));(1 ¡ t) sin(1=(1 ¡ t));0) для
t 2 [0;1) и
X(1) = (0;0;0).
Получим гладкую во всех внутренних точках непрерывную кривую,имеющую бесконечную длину,
s(X) =
1
Z
0
jX
0
(t)j dt = 1
Это кривая,гладкая внутри,но не являющаяся
C
1
-непрерывной на
[0;1].
2) Существуют непрерывные кривые,полностью заполняющие пространство.Впервые такую
кривую построил Пеано (на рис.2 показаны две итерации построения кривой Пеано).
1
1.3 Поворот кривой в пространстве.Кривизна кривой
Пусть
X:[0;d]!R
3
гладкая кривая,параметризованная длиной своей дуги.Для каждого
s 2 [0;d]
отложим единичный касательный вектор
e(s) =
_
X(s) от центра единичной сферы
S
2
.Получим
кривую
e:[0;d]!S
2
на единичной сфере
S
2
.Длина этой кривой называется поворотом кривой
X в пространстве.
Если
X 2 C
2
[0;d],то поворот
Â[®;¯]дуги кривой
X:[®;¯]!R
3
может быть вычислен так
Â[®;¯] =
¯
Z
®
¯
¯
¯
Ä
X(s)
¯
¯
¯
ds:
Пусть
X 2 C
2
[0;d].Кривизной
k(s) кривой
X в точке
X(s) называют величину
lim
h!0
Â[s;s +h]
h
= j _e (s)j
Отметим,что если
X(s) = (r cos(s=r);r sin(s=r);0) натуральная параметризация окружности
радиуса
r,то для всех
s
k (s) =
1
r
:
Для произвольной кривой
X вектор
N(s) =
Ä
X(s) = _e (s) называют вектором кривизны.
Вектор кривизны обладает следующими свойствами:
a) вектор
N(s) ортогонален
e(s) для всех
s.Действительно
(e (s);e (s)) ´ 1:Дифференцируя это
выражение получаем,что для всех
s
2 (N (s);e (s)) = 0
b) точка
C(s
0
) = X(s
0
) +
N (s
0
)
jN (s
0
)j
2
является центром соприкасающейся окружности к кривой
X в точке
X(s
0
).
Отметим,что соприкасающаяся окружность лежит в плоскости,которая проходит через точки
X(s
0
),
X(s
0
) +N(s
0
),и
X(s
0
) +e(s
0
).
Если
R(s) натуральная параметризация соприкасающейся окружности,
R(0) = X(s
0
),то при
h!0 имеем:
jX(s
0
+h) ¡R(h)j
h
2
!0
1.4 Бинормаль,кручение кривой
Пусть
X(s),
s 2 [0;d] натуральная параметризация кривой
X,
_e(s) =
_
X(s) касательный вектор;
n(s) единичный вектор нормали кривой,
n(s) =
_e (s)
j _e (s)j
Бинормалью кривой
X в точке
X(s) называется вектор
b(s),определенный следующим
образом
b(s) = e(s) £n(s):
Единичный вектор бинормали
b(s) при изменении
s от
0 до
d вычерчивает на единичной сфере
S
2
кривую (если бинормаль непрерывна)
b:[0;d]!S
2
:
2
Длина этой кривой называется кручением кривой
X в пространстве
R
3
.
Если
b 2 C
1
[0;d],то кручение
¿ [®;¯] дуги
X:[®;¯]!R
3
кривой
X может быть получено в
виде интеграла
¿ [®;¯] =
¯
Z
®
¯
¯
¯
_
b (s)
¯
¯
¯
ds:
Если
_
b(s) = 0,то
X плоская кривая.Кручение показывает как вращается в пространстве
соприкасающаяся плоскость к кривой
X.Кручение
¿(s) кривой
X в точке
X(s) определяется
равенством
¿ (s) =
¯
¯
¯
_
b (s)
¯
¯
¯
:
1.5 Репер Френе.Уравнения Френе
Репером Френе или сопровождающим трехгранником Френе называется репер
R(s) = hX(s);e(s);n(s);b(s)i:
Репер Френе в общем случае не является непрерывной функцией параметра
s,даже для гладкой
кривой,т.к.в точках с
_e(s) = 0 могут происходить скачки.В тоже время,если
_e(s) 6= 0 при
s 2 [0;d],
то
R(s) непрерывная функция параметра
s.Итак,пусть
R(s) = hX(s);e(s);n(s);b(s)i:
репер Френе.Уравнения Френе показывают,как изменяется репер
R(s) вдоль кривой.
Продифференцируем репер
R(s) по параметру
s.Получим
_
R(s) = hX(s);_e(s);_n(s);
_
b(s)i:
Поскольку векторы
_e(s);_n(s);
_
b(s) можно выразить через ортонормированный базис
e(s);n(s);b(s)пространства
R
3
,то
_
R(s) можно записать в виде
_
R(s) = he (s);[©(s)] ¢
2
4
e (s)
n(s)
b (s)
3
5
i
где
©(s) матрица
3 £3.Уравнения Френе определяют матрицу через
k(s) и
¿(s).
Имеем
_e(s) = k(s)n(s):
Следовательно,первая строка матрицы имеет вид
(0;k(s);0):
Найдем третью строку матрицы
©(s).Поскольку
b(s) = e(s) £n(s);
то дифференцируя по параметру
s получаем
_
b (s) = _e (s) £n(s) +e (s) £ _n(s) = e (s) £ _n(s)
Отсюда следует,что вектор
_
b(s) ортогонален вектору
e(s).А поскольку
(b(s);b(s)) ´ 1,то
_
b(s)ортогонален также и
b(s):Следовательно,
_
b(s) = ½(s)n(s);
где
½(s) кручение"со знаком",т.е.если соприкасающаяся плоскость вращается по часовой стрелке,
то
½(s) = j¿ (s)j;а если против,то
½(s) = ¡j¿ (s)j:Итак,мы получили,что третья строка матрицы
имеет вид
(0;½(s);0):
3
Найдем,наконец,вторую строку матрицы
©(s).Поскольку
(n(s);n(s)) ´ 0;то
_n(s)?n(s):
Следовательно,
_n(s) можно представить в виде
_n(s) = ® ¢ e (s) +¯ ¢ b (s)
Найдем
®;¯.Имеем
® = ( _n(s);e (s));¯ = ( _n(s);b (s))
Поскольку
(n(s);e (s)) ´ 0;то
( _n(s);e (s)) +(n(s);_e (s)) = 0
отсюда получаем
( _n(s);e (s)) = ¡(n(s);_e (s)) = ¡k (s)
Следовательно
® = ¡k (s)
Имеем
(n(s);b (s)) ´ 0;дифференцируя по
s,получаем
( _n(s);b (s)) = ¡
³
n(s);
_
b (s)
´
= ¡½(s)
следовательно,
¯ = ¡½(s):
Итак,мы получили,что вторая строка матрицы имеет вид
(¡k (s);0;¡½(s)):
Запишем теперь уравнения Френе в матричном виде:
2
4
_e (s)
_n(s)
_
b (s)
3
5
=
2
4
0
k (s)
0
¡k (s)
0
¡½(s)
0
½(s)
0
3
5
¢
2
4
e (s)
n(s)
b (s)
3
5
Сформулируем теперь фундаментальнуютеорему теории кривых,вытекающуюиз уравнений Френе
и теоремы существования и единственности для решения системы дифференциальных уравнений.
Теорема 1
Пусть на отрезке
[0;d] заданы две непрерывные функции
k (s) и
½(s),причем
k(s) > 0
для всех
s 2 [0;d].Тогда с точностью до положения в пространстве существует единственная
натурально параметризованная кривая
X:[0;d]!R
3
для которой функции
k (s) и
½(s) являются её кривизной и кручением.
1.6 Формулы для вычисления репера френе,кривизны и кручения через
произвольный параметр
Пусть
X:[a;b]!R
3
дважды дифференцируемая гладкая кривая,
X(t) = (x(t);y (t);z (t))– ее
координатное представление.Пусть
R(t) = hX(t);e (t);n(t);b (t)i
репер Френе кривой
X в точке
X(t),
t 2 (a;b)
Наша задача выразить векторы
e (t);n(t);b (t)
через
X(t);
X
0
(t);
X
00
(t):Вектор
e (t) это единичный касательный вектор кривой
X в точке
X(t);
следовательно
e (t) = X
0
(t)/jX
0
(t)j
или,в координатной форме,
e (t) =
(x
0
;y
0
;z
0
)
q
(x
0
)
2
+(y
0
)
2
+(z
0
)
2
4
Векторное произведение векторов
X
0
и
X
00
,очевидно,направлено по бинормали к кривой
X:
Следовательно,
b (t) =
X
0
£X
00
jX
0
£X
00
j
и
n(t) = b (t) £e (t)
Найдем теперь формулу для кривизны
k(t) кривой
X в точке
X(t):Пусть
R(s);
s 2
[0;d] натуральная параметризация кривой
X,
s:[a;b]![0;d] отображение связывающее
параметризации
X;R кривой
X:Имеем
X(t) = R(s (t)):Поэтому
X
0
t
=
_
R
s
¢ s
0
t
X
00
tt
=
Ä
R
ss
¢
³
s
0
t
´
2
+
_
R
s
¢ s
00
tt
Из (1) и (2) следует,что
X
0
t
£X
00
tt
=
³
_
R
s
£
Ä
R
ss
´
¢
³
s
0
t
´
3
:
Поскольку
¯
¯
¯
_
R
s
£
Ä
R
ss
¯
¯
¯
=
¯
¯
¯
Ä
R
ss
¯
¯
¯
= k (s (t)) = k (t);
то
k (t) =
¯
¯
¯
X
0
t
£X
00
tt
¯
¯
¯
¯
¯
X
0
t
¯
¯
3
:
Предположим теперь,что
X трижды дифференцируемая гладкая кривая.Найдем формулы
для кручения
½(t) кривой
X в точке
X(t):Легко видеть,что
b (s) =
_
R(s) £
Ä
R(s)
j
Ä
R(s)j
следовательно
b
0
s
=
R
0
s
£R
000
sss
jR
00
ss
j
+
³
R
0
s
£R
00
ss
´
¢
·
1
jR
00
ss
j
¸
0
s
Поскольку
_
b (s) = ½(s) ¢ n(s),и
n(s) =
Ä
R(s)
¯
¯
¯
Ä
R(s)
¯
¯
¯
то умножая скалярно на
n(s) получаем
½(s) =
³
_
b (s);n(s)
´
=
Ã
R
0
s
£R
000
sss
jR
00
ss
j
;
R
00
ss
jR
00
ss
j
!
Следовательно
½(s) = ¡
³
R
0
s
;R
00
ss
;R
000
sss
´
jR
00
ss
j
2
Найдем теперь выражение для кручения
½(t) кривой
X в точке
X(t) через производные
X
0
t
;
X
00
tt
;
X
000
ttt
:Имеем
R
0
s
= X
0
t
¢ t
0
s
;
R
00
ss
= X
00
tt
¢
³
t
0
s
´
2
+X
0
t
¢ t
00
ss
;
R
000
sss
= X
000
ttt
¢
³
t
0
s
´
3
+
n
X
0
t
;X
00
tt
o
;
где
n
X
0
t
;X
00
tt
o
линейная комбинация векторов
X
0
t
;X
00
tt
:Подставляя найденные выражения в
формулу для
½(s),получаем
½(t) = ¡
³
X
0
t
;X
00
tt
;X
000
ttt
´
¢
³
t
0
s
´
6
jR
00
ss
j
2
5
Поскольку
¯
¯
¯
R
00
ss
¯
¯
¯
2
= k
2
(t) =
¯
¯
¯
X
0
t
£X
00
tt
¯
¯
¯
2
¡
s
0
t
¢
6
то получаем
½(t) = ¡
³
X
0
t
;X
00
tt
;X
000
ttt
´
¯
¯
X
0
t
£X
00
tt
¯
¯
2
:
Выведем,наконец,выражение для вектора кривизны
N(t) кривой
X в точке
X(t):Имеем
N(s) = R
00
ss
.Поскольку единичный вектор
_
R(s) ортогонален вектору
N(s),то имеем
N (s) =
h
_
R(s) £
Ä
R(s)
i
£
_
R(s):
Заменяя
_
R(s);
Ä
R(s) их выражениями через
X
0
t
;
X
00
tt
получаем
N (t) =
·
X
0
t
¢ t
0
s
£
µ
X
00
tt
³
t
0
s
´
2
+X
0
t
¢ t
00
ss
¶¸
£X
0
t
¢ t
0
s
Следовательно
N (t) =
³
t
0
s
´
4
¢
³h
X
0
t
£X
00
tt
i
£X
0
t
´
:
Поскольку
³
t
0
s
´
4
=
1
¯
¯
X
0
t
¯
¯
4
;
то
N (t) =
h
X
0
t
£X
00
tt
i
£X
0
t
¯
¯
X
0
t
¯
¯
4
:
1.7 Кривая,оснащенная репером
Параметрическую кривую
X:[a;b]!R
3
будем называть оснащенной репером,если с каждой
точкой
X(t) кривой связан ортогональный репер
R(t) = hX(t);e
1
(t);e
2
(t);e
3
(t)i:
При этом тройка ортонормированных векторов
he
1
(t);e
2
(t);e
3
(t)i изменяется непрерывно вдоль
кривой.Такая конструкция является,как мы увидим в дальнейшем,полезной для многих задач
компьютерной графики.Если
Xрегулярная кривая с непрерывным вектором кривизны не
обращающемся в ноль,то репер Френе задает оснащение кривой
X:В общем случае,как мы знаем,
репер Френе не является непрерывной функцией параметра
t.Рассмотрим здесь простые способы
построения оснащения гладкой кривой
X.
I.Тривиальное оснащение векторы
he
1
(t);e
2
(t);e
3
(t)i постоянны (это оснащение
неинтересно).
II.Пусть
e (t) =
X
0
t
¯
¯
X
0
t
¯
¯
единичный касательный вектор к кривой
X в точке
X(t);
m(t) = Rot (e (a);e (t))
матрица поворота вокруг вектора
n = e(a) £e(t)
на угол
'= arccos(e(a);e(t))
переводящая вектор
e(a) в вектор
e(t).
Пусть
R(a) = hX(a);e
1
;e
2
;e
3
i
6
некоторый репер заданный в начальной точке кривой.Положим
R(t) = hX(t);e
1
¢ m(t);e
2
¢ m(t);e
3
¢ m(t)i:
Ясно,что полученные таким образом тройки векторов не зависят от дуги кривой,а зависит
лишь от касательных.
III.Пусть
¢ = fa = t
0
< t
1
< t
2
<:::< t
n
= bg
разбиение отрезка
[a;b]:Построим сначала массив реперов
R(t
1
);R(t
2
);:::R(t
n
)
вдоль кривой
X следующим образом.Пусть
R(a) = hX(a);e
1
;e
2
;e
3
i
некоторый репер,определенный в начале кривой.Предположим теперь,что репер
R(t
k
) в точке
X(t
k
) кривой уже построен.Тогда репер
R(t
k+1
) строится следующим образом.Отложим векторы
e (t
k
);
e (t
k+1
) от начала координат и построим вращение пространства вокруг оси,проходящей
через начало координат,с направляющим вектором
n
k
= e (t
k
) £e (t
k+1
);переводящеe вектор
e (t
k
)
в вектор
e (t
k+1
)
m(t
k+1
) = Rot (e (t
k
);e (t
k+1
))
Положим теперь
R(t
k+1
) = hX(t
k+1
);e
1
(t
k
) ¢ m(t
k+1
);e
2
(t
k
) ¢ m(t
k+1
);e
3
(t
k
) ¢ m(t
k+1
)i
Для точки
t;лежащей между точками
t
p
и
t
p+1
положим
R(t) = hX(t);e
1
(t
p
) ¢ m(p;t);e
2
(t
p
) ¢ m(p;t);e
3
(t
p
) ¢ m(p;t)i;
где
m(p;t) = Rot (e (t
p
);e (t))
вращение пространства,переводящее вектор
e (t
p
) в вектор
e (t):
IV.В некоторых случаях требуется построить оснащение кривой подчиненное некоторым
дополнительным условиям.Для примера,построим здесь оснащение
R гладкой кривой
X:
[a;b]!R
3
;обладающей свойствами:
R(a) = hX(a);e
1
;e
2
;e
3
i;e
3
=
X
0
(a)
jX
0
(a)j
;
R(b) = hX(b);¹e
1
;¹e
2
;¹e
3
i;¹e
3
=
X
0
(b)
jX
0
(b)j
;
где векторы
¹e
1
;¹e
2
также заданы.Считаем также,что тройки векторов
(¹e
1
;¹e
2
;¹e
3
) и
(e
1
;e
2
;e
3
) имеют
одинаковую ориентацию.Для решения этой задачи построим сначала некоторое оснащение кривой
T (t) = hX(t);e
1
(t);e
2
(t);e
3
(t)i;
полагая
T (a) = R(a):Ясно,что
T (b),в общем случае,не будет совпадать с
R(b),но при этом
e
3
(b) = ¹e
3
:Вычислим угол
',на который следует повернуть репер
T (b) вокруг вектора
e
3
(b);
чтобы он совпал с репером
R(b).Положим теперь
R(t) = hX(t);¹e
1
(t);¹e
2
(t);¹e
3
(t)i;
где
¹e
1
(t);
¹e
2
(t) векторы,полученные поворотом векторов
e
1
(t);
e
2
(t) на угол
¿ (t) =
t¡a
jb¡aj
¢'
вокруг вектора
e
3
(t):Ясно,что
R(t) требуемое оснащение кривой.
7
1.8 Геометрическая гладкость.Склейка кривых
Пусть
X = (x;y;z);x;y;z 2 C
2
[a;b] дважды дифференцируемая кривая.Это условие не
обеспечивает геометрическую гладкость кривой.Такая кривая может иметь острие.В точке
t
0
2
(a;b),которая соответствует острию,
jX
0
(t
0
)j = 0 Если параметр
t принять за время,то
X
0
(t)
скорость в момент времени
t.При подходе к точке
t
0
скорость замедляется,обращается в ноль в
t
0
,наконец,меняет направление и начинает возрастать.Геометрическая гладкость означает,что
в каждой точке кривая имеет касательный вектор,который непрерывно изменяется вдоль кривой.
Очевидно,что условие
jX
0
(t
0
)j 6= 0 для всех
t 2 (a;b) является достаточным для геометрической
гладкости непрерывно дифференцируемой кривой.Класс всех геометрически гладких кривых
будем обозначать через
G
1
.
Кривую
X будем называть геометрически дважды гладкой,если для всех
t 2 (a;b)
определен вектор кривизны
N(t),который непрерывно изменяется вдоль кривой.Множество всех
геометрически дважды гладких кривых будем обозначать
G
2
.
В компьютерной графике часто приходиться склеивать кривые,чаще из сплайнов,для этого
используют непрерывное,гладкое и дважды гладкое склеивание.
Кривые
X:[a;b]!R
2
;
Y:[c;d]!R
2
назовем непрерывно склеенными,если конец кривой
X совпадает с началом кривой
Y:
Если
X,
Y непрерывно склеены,и в точке склеивания касательные к
X,
Y совпадают,то говорим,
что они геометрически гладко склеены.
Наконец,если кривые
X и
Y гладко склеены,и при этом вектор кривизны
N
X
(b) кривой
X в конце кривой,совпадает с вектором кривизны
N
Y
(c) кривой
Y в ее начале,то кривые
X и
Y называют геометрически дважды гладко склеенными.Если кривые
X и
Y
геометрически дважды гладко склеены,то результирующая кривая в точке склеивания имеет
соприкасающуюся окружность.
8
Автор
vv-usov
Документ
Категория
Методические пособия
Просмотров
1 938
Размер файла
303 Кб
Теги
кривая, длина, кривизна, кручение, теорема Френе
1/--страниц
Пожаловаться на содержимое документа