B-сплайн

B-сплайн
Підтримується Вікіпроєктом Вікіпедія:Проєкт:Математика
CMNS: B-сплайн у Вікісховищі

B-сплайнсплайн-функція, що має мінімальний носій для заданого степеня, гладкості та області визначення.

Фундаментальна теорема стверджує, що довільна сплайн-функція заданого степеня, гладкості і області визначення може бути представлена як лінійна комбінація B-сплайнів того ж степеня і гладкості на тій же області визначення.

Термін B-сплайн запровадив Ісак Яков Шонберг у 1978 році і є скороченням від словосполучення «базисний сплайн». B-сплайни є узагальненням кривих Без'є, вони допомагають уникнути феномену Рунге при високих степенях полінома.

Визначення

B-сплайн степеня n з заданими вузлами:

t 0 t 1 t m {\displaystyle t_{0}\leq t_{1}\leq \cdots \leq t_{m}}

та (m−n) контрольними точками

P 0 P m n 1 {\displaystyle \mathbf {P} _{0}\ldots \mathbf {P} _{m-n-1}}

це параметрична крива, що складена з базисних B-сплайнів степеня n

S ( t ) = i = 0 m n 1 P i b i , n ( t ) , t [ t n , t m n ] . {\displaystyle \mathbf {S} (t)=\sum _{i=0}^{m-n-1}\mathbf {P} _{i}b_{i,n}(t),\qquad t\in [t_{n},t_{m-n}].}

Базисні B-сплайни визначаються рекурсивними формулами:

b j , 0 ( t ) := 1 [ t j , t j + 1 ) = { 1 , t [ t j , t j + 1 ) 0 , t [ t j , t j + 1 ) . {\displaystyle b_{j,0}(t):=1_{[t_{j},t_{j+1})}={\begin{cases}1,&\quad t\in [t_{j},t_{j+1})\\0,&\quad t\notin [t_{j},t_{j+1})\end{cases}}.}
b j , n ( t ) := t t j t j + n t j b j , n 1 ( t ) + t j + n + 1 t t j + n + 1 t j + 1 b j + 1 , n 1 ( t ) > 0 {\displaystyle b_{j,n}(t):={\frac {t-t_{j}}{t_{j+n}-t_{j}}}b_{j,n-1}(t)+{\frac {t_{j+n+1}-t}{t_{j+n+1}-t_{j+1}}}b_{j+1,n-1}(t)\;\quad >0} при t [ t j , t j + n + 1 ) . {\displaystyle t\in [t_{j},\;t_{j+n+1}).}

При однаковій відстані між сусідніми вузлами B-сплайни називаються однорідними, в протилежному випадку — неоднорідними.

Однорідні B-сплайни

Для однорідних B-сплайнів, базисні B-сплайни однакового степеня є зміщеними екземплярами однієї функції. Нерекурсивним визначенням базисних B-сплайнів є

b j , n ( t ) = b n ( t t j ) , j = 0 , m n 1 ¯ , {\displaystyle b_{j,n}(t)=b_{n}(t-t_{j}),\qquad \;j={\overline {0,m-n-1}},}

де

b n ( t ) := n + 1 n i = 0 n + 1 ω i , n ( t t i ) + n , ω i , n := j = 0 , j i n + 1 1 t j t i . {\displaystyle b_{n}(t):={\frac {n+1}{n}}\sum _{i=0}^{n+1}\omega _{i,n}(t-t_{i})_{+}^{n},\qquad \omega _{i,n}:=\prod _{j=0,j\neq i}^{n+1}{\frac {1}{t_{j}-t_{i}}}.}

Кардинальні B-сплайни

Визначимо B0 як індикаторну функцію відрізку [ 1 2 , 1 2 ] {\displaystyle [-{\tfrac {1}{2}},{\tfrac {1}{2}}]} і Bk рекурсивно через згортку

B k ( t ) := B 0 ( t ) B k 1 ( t ) = R B 0 ( t τ ) B k 1 ( τ ) d τ = t 1 2 t + 1 2 B k 1 ( τ ) d τ , k N {\displaystyle B_{k}(t):=B_{0}(t)*B_{k-1}(t)=\int _{\mathbb {R} }B_{0}(t-\tau )B_{k-1}(\tau )\,d\tau =\int _{t-{\tfrac {1}{2}}}^{t+{\tfrac {1}{2}}}B_{k-1}(\tau )\,d\tau ,\quad k\in \mathbb {N} }

Bk має носій [ k + 1 2 , k + 1 2 ] . {\displaystyle [-{\tfrac {k+1}{2}},{\tfrac {k+1}{2}}].}

Приклади

Константні B-сплайни

Це найпростіші сплайни. Вони не є навіть неперервними.

b j , 0 ( t ) = 1 [ t j , t j + 1 ) B 0 ( t ) = 1 [ 1 2 , 1 2 ) . {\displaystyle b_{j,0}(t)=1_{[t_{j},t_{j+1})}\qquad B_{0}(t)=1_{[-{\tfrac {1}{2}},{\tfrac {1}{2}})}.}

Лінійні B-сплайни

Лінійні B-сплайни є неперервними, але не диференційовними.

b j , 1 ( t ) = { t t j t j + 1 t j , t [ t j , t j + 1 ) t j + 2 t t j + 2 t j + 1 , t [ t j + 1 , t j + 2 ) B 1 ( t ) = { t + 1 , t [ 1 , 0 ) 1 t , t [ 0 , + 1 ) {\displaystyle b_{j,1}(t)={\begin{cases}{\frac {t-t_{j}}{t_{j+1}-t_{j}}},&\quad t\in [t_{j},\;t_{j+1})\\{\frac {t_{j+2}-t}{t_{j+2}-t_{j+1}}},&\quad t\in [t_{j+1},\;t_{j+2})\end{cases}}\qquad B_{1}(t)={\begin{cases}t+1,&t\in [-1,\;0)\\1-t,&t\in [0,\;+1)\end{cases}}}

Однорідні квадратичні B-сплайни

Є найбільш вживаною формою B-сплайнів.

b 2 ( t ) = b j , 2 ( t ) = { 1 2 ( t t j ) 2 , t [ t j , t j + 1 ) ( t t j + 1 ) 2 + ( t t j + 1 ) + 1 2 , t [ t j + 1 , t j + 2 ) 1 2 ( 1 ( t t j + 2 ) ) 2 , t [ t j + 2 , t j + 3 ) B 2 ( t ) = { 1 2 ( t + 3 2 ) 2 , t [ 3 2 , 1 2 ) 3 4 t 2 , t [ 1 2 , + 1 2 ) 1 2 ( t 3 2 ) 2 , t [ 1 2 , 3 2 ) {\displaystyle b_{2}(t)=b_{j,2}(t)={\begin{cases}{\frac {1}{2}}(t-t_{j})^{2},&t\in [t_{j},\;t_{j+1})\\-(t-t_{j+1})^{2}+(t-t_{j+1})+{\frac {1}{2}},&t\in [t_{j+1},\;t_{j+2})\\{\frac {1}{2}}(1-(t-t_{j+2}))^{2},&t\in [t_{j+2},\;t_{j+3})\end{cases}}\qquad B_{2}(t)={\begin{cases}{\frac {1}{2}}(t+{\frac {3}{2}})^{2},&t\in [-{\frac {3}{2}},\;-{\frac {1}{2}})\\{\frac {3}{4}}-t^{2},&t\in [-{\frac {1}{2}},\;+{\frac {1}{2}})\\{\frac {1}{2}}(t-{\frac {3}{2}})^{2},&t\in [{\frac {1}{2}},\;{\frac {3}{2}})\end{cases}}}

В матричній формі:

S i ( t ) = [ t 2 t 1 ] 1 2 [ 1 2 1 2 2 0 1 1 0 ] [ p i 1 p i p i + 1 ] , t [ 0 , 1 ] , i = 1 , m 1 ¯ {\displaystyle \mathbf {S} _{i}(t)={\begin{bmatrix}t^{2}&t&1\end{bmatrix}}{\frac {1}{2}}{\begin{bmatrix}1&-2&1\\-2&2&0\\1&1&0\end{bmatrix}}{\begin{bmatrix}\mathbf {p} _{i-1}\\\mathbf {p} _{i}\\\mathbf {p} _{i+1}\end{bmatrix}},\qquad t\in [0,1],\quad i={\overline {1,m-1}}}

Однорідні кубічні B-сплайни

b 3 ( t ) = b j , 3 ( t ) = { 1 6 ( t t j ) 3 , t [ t j , t j + 1 ) 1 6 ( 3 ( t t j + 1 ) 3 + 3 ( t t j + 1 ) 2 + 3 ( t t j + 1 ) + 1 ) , t [ t j + 1 , t j + 2 ) . . . , t [ t j + 2 , t j + 3 ) 1 6 ( 1 ( t t j + 3 ) ) 3 , t [ t j + 3 , t j + 4 ) {\displaystyle b_{3}(t)=b_{j,3}(t)={\begin{cases}{\frac {1}{6}}(t-t_{j})^{3},&t\in [t_{j},\;t_{j+1})\\{\frac {1}{6}}\left(-3(t-t_{j+1})^{3}+3(t-t_{j+1})^{2}+3(t-t_{j+1})+1\right),&t\in [t_{j+1},\;t_{j+2})\\...,&t\in [t_{j+2},\;t_{j+3})\\{\frac {1}{6}}(1-(t-t_{j+3}))^{3},&t\in [t_{j+3},\;t_{j+4})\end{cases}}}
B 3 ( t ) = { 1 6 ( t + 2 ) 3 , t [ 2 , 1 ) 1 6 ( 3 t 3 6 t 2 + 4 ) , t [ 1 , 0 ) 1 6 ( 3 t 3 6 t 2 + 4 ) , t [ 0 , 1 ) 1 6 ( t + 2 ) 3 , t [ 1 , 2 ) {\displaystyle B_{3}(t)={\begin{cases}{\frac {1}{6}}(t+2)^{3},&t\in [-2,\;-1)\\{\frac {1}{6}}(-3t^{3}-6t^{2}+4),&t\in [-1,\;0)\\{\frac {1}{6}}(3t^{3}-6t^{2}+4),&t\in [0,\;1)\\{\frac {1}{6}}(-t+2)^{3},&t\in [1,\;2)\end{cases}}}


В матричній формі:

S i ( t ) = [ t 3 t 2 t 1 ] 1 6 [ 1 3 3 1 3 6 3 0 3 0 3 0 1 4 1 0 ] [ p i 1 p i p i + 1 p i + 2 ] , t [ 0 , 1 ] . {\displaystyle \mathbf {S} _{i}(t)={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}{\frac {1}{6}}{\begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&0&3&0\\1&4&1&0\end{bmatrix}}{\begin{bmatrix}\mathbf {p} _{i-1}\\\mathbf {p} _{i}\\\mathbf {p} _{i+1}\\\mathbf {p} _{i+2}\end{bmatrix}},\quad t\in [0,1].}

Див. також

  • Портал «Математика»

Джерела

  • Hovey, Chad (2022). Formulation and Python Implementation of Bézier and B-Spline Geometry. SAND2022-7702C. (153 pages)
  • Carl de Boor (1978). A Practical Guide to Splines. Springer-Verlag. ISBN 978-3-540-90356-7.
  • Piegl, Les; Tiller, Wayne (1997). The NURBS Book (вид. 2nd.). Springer. ISBN 978-3-540-61545-3.
  • Hartmut Prautzsch; Wolfgang Boehm; Marco Paluszny (2002). Bézier and B-Spline Techniques. Springer Science & Business Media. ISBN 978-3-540-43761-1.

Посилання

  • Weisstein, Eric W. B-Spline(англ.) на сайті Wolfram MathWorld.
  • Ruf, Johannes. B-splines of third order on a non-uniform grid (PDF). Архів оригіналу (PDF) за 6 листопада 2013. Процитовано 2 травня 2012.
  • п
  • о
  • р
Визначення
Перетворені
Неплоскі
Плоскі
алгебричні
Інші
Апроксимаційні
Циклоїдальні
Інші
Плоскі
трансцендентні
Циклоїдальні
Інші
Фрактальні
Прості
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки.
Матеріал без джерел може бути піддано сумніву та вилучено.
(червень 2023)
В іншому мовному розділі є повніша стаття B-spline(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою перекладу з англійської. (грудень 2020)
  • Дивитись автоперекладену версію статті з мови «англійська».
  • Перекладач повинен розуміти, що відповідальність за кінцевий вміст статті у Вікіпедії несе саме автор редагувань. Онлайн-переклад надається лише як корисний інструмент перегляду вмісту зрозумілою мовою. Не використовуйте невичитаний і невідкоригований машинний переклад у статтях української Вікіпедії!
  • Машинний переклад Google є корисною відправною точкою для перекладу, але перекладачам необхідно виправляти помилки та підтверджувати точність перекладу, а не просто скопіювати машинний переклад до української Вікіпедії.
  • Не перекладайте текст, який видається недостовірним або неякісним. Якщо можливо, перевірте текст за посиланнями, поданими в іншомовній статті.
  • Докладні рекомендації: див. Вікіпедія:Переклад.
Сигма Це незавершена стаття з математики.
Ви можете допомогти проєкту, виправивши або дописавши її.