How do I multiply two BSPlines curves?

48 Views Asked by At

Question: How do I compute the knot-vector and control points of $C_3$ such $C_3(u) = C_1(u) \cdot C_2(u) \ \ \ \forall \ u$?

Description:

Let $C_1(u)$ and $C_2(u)$ be two BSpline scalar from $\left[0, \ 1\right] \to \mathbb{R}$.

$$C_1(u) = \sum_{i=0}^{n} N_{i,p}^{(1)}(u) \cdot P_{i}$$ $$C_2(u) = \sum_{j=0}^{m} N_{j,q}^{(2)}(u) \cdot Q_{j}$$

With knot vectors

$$U = \left[\underbrace{0, \ \cdots, \ 0}_{p+1}, \ \underbrace{u_{p+1}, \ \cdots, \ u_{n}}_{n-p-1}, \ \underbrace{1, \ \cdots, \ 1}_{p+1}\right]_{(n+p+1)}$$ $$V = \left[\underbrace{0, \ \cdots, \ 0}_{q+1}, \ \underbrace{v_{q+1}, \ \cdots, \ v_{n}}_{m-q-1}, \ \underbrace{1, \ \cdots, \ 1}_{q+1}\right]_{(m+q+1)}$$

Then, I want to find the new vector $W$ and the control points $R$ to mount $C_3$:

$$W = \left[\underbrace{0, \ \cdots, \ 0}_{r+1}, \ \underbrace{w_{r+1}, \ \cdots, \ w_{h}}_{h-r-1}, \ \underbrace{1, \ \cdots, \ 1}_{r+1}\right]_{(h+r+1)}$$ $$C_3(u) = \sum_{k=0}^{h} N_{k,r}^{(3)}(u) \cdot R_{k} = \left(\sum_{i=0}^{n}N_{i,p}^{(1)}(u)\cdot P_{i}\right)\left(\sum_{j=0}^{m}N_{j,q}^{(2)}(u)\cdot Q_{j}\right) = C_1(u) \cdot C_2(u)$$

My attempt:

I know that $C_1$ is a $p$-degree polynomial and $C_2$ is a $q$-degree polynomial. Then, $C_3$ must be a $(p+q)$-degree polynomial.

$$r = p+q$$

Now, let $\bar{u}$ be a knot on $\left[0, \ 1\right]$.

  • If $U$ has $a$-times the value of $\bar{u}$, then $C_{1}$ is class $C^{p-a}$ at $u=\bar{u}$
  • If $V$ has $b$-times the value of $\bar{u}$, then $C_{2}$ is class $C^{q-b}$ at $u=\bar{u}$
  • Then $C_3(u)$ must be class $C^{p+q-a-b}$ at $u = \bar{u}$.

Therefore, $W$ has $(a+b)$-times the knot $\bar{u}$. That means we can concatenate the internal knots of $U$ and $V$ to mount $W$.

$$h-r-1 = (n-p-1) + (m-q-1) \Rightarrow h = n+m-1$$

Now I don't know how to proceed to get the $(h+1)$ values of $R_{i}$. I only know about the extremities:

$$R_{0} = P_0 \cdot Q_0$$ $$R_{h} = P_{n} \cdot Q_{m}$$