I'm looking into different methods for defining uniform B-spline basis functions. One of those methods is using convolution. In the course notes of Dennis Zorin ("Bézier Curves and B-splines, Blossoming") I found this:

$$ \begin{align*} Box(t) = \begin{cases}1 \qquad 0 \le t \lt 1 \\ 0 \qquad otherwise \end{cases} \end{align*} $$

Convolution is defined as

$$ \begin{align*} (f \star g)(t) = \int_{-\infty}^{\infty}f(s)g(t-s)\;ds \end{align*} $$

So in order to define the degree-1 basis function, use

$$ \begin{align*} (Box \star Box)(t) = \int_{-\infty}^{\infty}Box(s)Box(t-s)\;ds \end{align*} $$

But I don't know how to solve this integral. Therefore I searched some more and found Kenneth Joy's lecture notes "The uniform B-spline blending function".

He says that you can split the integral into two pieces (sounds logical because the degree-1 basis function is a "hat" function). But I don't understand where the integration limits (from $0$ to $t$ and from $t-1$ to $1$) are coming from. There is also a solution for the degree-2 curve, but I think there are some mistakes in this part (regarding the integration limits), because the integrals don't match with my calculations.

I would be very glad if somebody could help me with this (or refer to an article or book where they show the reader how to solve it). Finally, are there (except for convolution, divided differences, and the Cox-DeBoor relation) other methods to deduce these basis functions?


The integral

\begin{align*} (Box \star Box)(t) = \int_{-\infty}^{\infty}Box(s)Box(t-s)\;ds \end{align*}

is equal to the integral

\begin{align*} (Box \star Box)(t) = \int_{0}^{1}Box(s)Box(t-s)\;ds \end{align*}

since $Box(s)$ is only non-zero on the interval $[0,1)$. On the other hand $Box(t-s)$ will be non-zero when $t-s \in [0,1[$ or $s \in ]t-1,t]$ which depends on the value of $t$. If $t>2$ or $t<0$ there is no overlap between the intervals $[0,1[$ and $]t-1,t]$ and therefore the integral is zero. If $t<1$ the overlap will be $[0,t]$, if $t\geq 1$ the overlap will be $(t-1,1)$. In these cases the integral will simply be the length of the overlap.


$$(Box \star Box)(t) = \begin{cases} \int_{0}^{1}Box(s)Box(t-s)\;ds = \int_{0}^{1} 0 \;ds = 0 & \text{ if } t<0 \; , \\ \int_{0}^{t}Box(s)Box(t-s)\;ds = \int_{0}^{t} 1 \;ds = t & \text{ if } 0\leq t<1 \; ,\\ \int_{t-1}^{1}Box(s)Box(t-s)\;ds = \int_{t-1}^{1} 1 \;ds = 2-t & \text{ if } 1\leq t<2 \; , \\ \int_{0}^{1}Box(s)Box(t-s)\;ds = \int_{0}^{1} 0\;ds = 0 & \text{ if } 2\leq t \; . \end{cases} $$

  • $\begingroup$ Thanks, your explanation makes it very clear. The only hard part is determining the overlap for the different intervals, but once you got these overlaps, it's easy. Edit: Just calculated the degree-2 and degree-3 basis functions, this is quite a nice method (although it requires some work to write out the integrals). $\endgroup$
    – Ailurus
    Feb 29 '12 at 16:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.