Основы компьютерной графики для программистов. Казанцев А.В. - 53 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 53
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
() ( )
=
=
3
0
j
j
iiji
xxaxS .
Задача построения полинома сводится к нахождению коэффициентов
ij
a . Поскольку
для каждого из отрезков
[]
1
,
+ii
xx необходимо найти 4 коэффициента
ij
a , то всего
количество искомых коэффициентов будет
m4
. Для нахождения всех коэффициентов
определим соответствующее количество уравнений. Первые
()
1m уравнений
получаем из условий совпадения значений функции во внутренних узлах
i
x , 1,1 = mi .
Следующие
()
12 m
уравнений получаем аналогично из условий совпадения значений
первых и вторых производных во внутренних узлах. Вместе с первым условием
получаем
241111
=
+
+++ mmmmm уравнений. Недостающие два уравнения
можно получить заданием значений первых производных в концевых точках отрезка
[]
m
xx ,
0
. Так могут быть заданы граничные условия.
Сплайновые кривые Эрмита и Безье
Перейдем к более сложному случаюзаданию кривых в трехмерном пространстве. В
случае функционального задания кривой
(
)
()
=
=
xfz
xfy
возможны многозначности в случае
самопересечений и неудобства при значениях производных равных
. Ввиду этого
будем искать функцию в параметрическом виде. Пусть
t
- независимый параметр,
такой что
10
t
. Кубическим параметрическим сплайном назовем следующую
систему уравнений:
(
)
()
()
+++=
+++=
+++=
zzzz
yyyy
xxxx
dtctbtatz
dtctbtaty
dtctbtatx
23
23
23
Координаты точек на кривой описываются вектором
(
)
(
)
(
)
(
)
tztytx ,,
, а три производные
задают координаты соответствующего касательного вектора в точке. Например, для
координаты
x
:
xxx
ctbta
dt
dx
++=
23
2
.
Одним из способов задания параметрического кубического сплайна является указание
координат начальной и конечной точек, а также векторов касательных в них. Такой
способ задания называется формой Эрмита. Обозначим концевые точки
1
P и
4
P , а
касательные векторы в них
1
R
и
4
R
. Индексы выбраны таким образом с учетом
дальнейшего изложения.
Будем решать задачу нахождения четверки коэффициентов
xxxx
dcba ,,,, так как для
оставшихся двух уравнений коэффициенты находятся аналогично. Запишем условие
для построения сплайна:
()
x
Px
1
0 = ,
(
)
x
Px
4
1
=
,
(
)
x
Rx
1
'
0 = ,
(
)
x
Rx
4
'
1 = (*)
Перепишем выражение для
x
в векторном виде [3]:
Основы компьютерной графики для программистов                                                                  53
____________________________________________________________________________________________________________________


                                                                       3
                                                          S i (x ) = ∑ aij (x − xi ) .
                                                                                        j

                                                                      j =0


Задача построения полинома сводится к нахождению коэффициентов aij . Поскольку
для каждого из отрезков [xi , xi+1 ] необходимо найти 4 коэффициента aij , то всего
количество искомых коэффициентов будет 4m . Для нахождения всех коэффициентов
определим соответствующее количество уравнений. Первые (m − 1) уравнений
получаем из условий совпадения значений функции во внутренних узлах xi , i = 1, m − 1 .
Следующие 2(m − 1) уравнений получаем аналогично из условий совпадения значений
первых и вторых производных во внутренних узлах. Вместе с первым условием
получаем m − 1 + m − 1 + m − 1 + m + 1 = 4m − 2 уравнений. Недостающие два уравнения
можно получить заданием значений первых производных в концевых точках отрезка
[x0 , xm ] . Так могут быть заданы граничные условия.

Сплайновые кривые Эрмита и Безье
Перейдем к более сложному случаю – заданию кривых в трехмерном пространстве. В
                                      ⎧ y = f (x )
случае функционального задания кривой ⎨            возможны многозначности в случае
                                      ⎩ z = f (x )
самопересечений и неудобства при значениях производных равных ∞ . Ввиду этого
будем искать функцию в параметрическом виде. Пусть t - независимый параметр,
такой что 0 ≤ t ≤ 1 . Кубическим параметрическим сплайном назовем следующую
систему уравнений:
                                                      ⎧ x(t ) = a x t 3 + bx t 2 + c x t + d x
                                                      ⎪
                                                      ⎨ y (t ) = a y t + by t + c y t + d y
                                                                      3        2

                                                      ⎪ z (t ) = a t 3 + b t 2 + c t + d
                                                      ⎩            z       z        z        z


Координаты точек на кривой описываются вектором (x(t ), y (t ), z (t )) , а три производные
задают координаты соответствующего касательного вектора в точке. Например, для
координаты x :
                                                          dx
                                                             = 3a x t 2 + 2bx t + c x .
                                                          dt
Одним из способов задания параметрического кубического сплайна является указание
координат начальной и конечной точек, а также векторов касательных в них. Такой
способ задания называется формой Эрмита. Обозначим концевые точки P1 и P4 , а
касательные векторы в них R1 и R4 . Индексы выбраны таким образом с учетом
дальнейшего изложения.
Будем решать задачу нахождения четверки коэффициентов a x , bx , c x , d x , так как для
оставшихся двух уравнений коэффициенты находятся аналогично. Запишем условие
для построения сплайна:
                                         x(0) = P1x , x(1) = P4 x , x ' (0) = R1x , x ' (1) = R4 x   (*)
Перепишем выражение для x в векторном виде [3]:




http://www.ksu.ru/persons/9134.ru.html