B-스플라인 곡선 (B-spline curve)은 주어진 여러 개의 점에서 정의되는 매끄러운 곡선이다. 각 구간별로 별도의 다항식으로 표현되기 때문에 일부의 제어점을 변경해도 전체 곡선에는 영향을 미치지 않는 성질이있다. 베지어 곡선 과 함께 컴퓨터 그래픽 분야에서 널리 이용된다. B-spline은 Basis spline (Basis = 기저)의 약어로서, 기본적으로 곡선은 제어점을 통과하지 않는다.
제어점을 P i 이라 하면, n 차의 B-spline곡선 은
S
(
t
)
=
∑
i
=
0
m
−
n
−
2
P
i
b
i
,
n
(
t
)
,
t
∈
[
t
n
,
t
m
−
n
−
1
]
{\displaystyle \mathbf {S} (t)=\sum _{i=0}^{m-n-2}\mathbf {P} _{i}b_{i,n}(t){\mbox{ , }}t\in [t_{n},t_{m-n-1}]}
.
으로 표현된다. 여기서 ti 은 마디(knot )라고 불리는m 개의 실수이다.
t
0
≤
t
1
≤
⋯
≤
t
m
−
1
{\displaystyle t_{0}\leq t_{1}\leq \cdots \leq t_{m-1}}
또한 bi,n 은B-스플라인 기저함수 (B-spline basis function)이고 de Boor Cox의 점화식 에 의해 다음과 같이 정의된다.
b
j
,
0
(
t
)
:=
{
1
i
f
t
j
≤
t
<
t
j
+
1
0
o
t
h
e
r
w
i
s
e
,
j
=
0
,
…
,
m
−
2
{\displaystyle b_{j,0}(t):=\left\{{\begin{matrix}1&\mathrm {if} \quad t_{j}\leq t<t_{j+1}\\0&\mathrm {otherwise} \end{matrix}}\right.,\qquad j=0,\ldots ,m{-}2}
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
)
,
j
=
0
,
…
,
m
−
n
−
2.
{\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),\qquad j=0,\ldots ,m{-}n{-}2.}