# Blossoming

Das Blossoming-Prinzip stellt im Computer Aided Geometric Design eine Verbindung von Punkten einer Kurve und ihren Kontrollpunkten her. Es wurde 1984 von Paul de Casteljau entdeckt und 1987 von Lyle Ramshaw veröffentlicht. Im Falle von identischen Argumenten (der sog. Diagonalen) bestimmt das Blossom den Punkt einer Kurve, im Fall von konsekutiven Argumenten einen Kontrollpunkt dieser Kurve. Insbesondere verbindet das Blossoming die Theorien für Bézierkurven und B-Spline-Kurven und -Flächen, mithin den de-Casteljau-Algorithmus mit dem de-Boor-Algorithmus.

## Definition

Als Blossom ${\bf {b}}[t_{1},\dots ,t_{n}]$ des Polynoms ${\bf {b}}(t)$wird in der Mathematik, insbesondere im Computer Aided Design, eine Funktion mit $n$ Argumenten bezeichnet, die durch drei Eigenschaften definiert ist:
* Sie ist symmetrisch in ihren Argumenten:
       ${\bf {b}}[t_{1},\dots ,t_{n}]={\bf {b}}{\big\pi (t_{1},\dots ,t_{n}){\big ]},\,$
    (wobei $\pi$ eine beliebige Permutation ihrer Argumente ist).
* Sie ist multi-affin, also affin in jedem ihrer Argumente:
       ${\bf {b}}[\alpha r+\beta s,\dots ]=\alpha {\bf {b}}[r,\dots ]+\beta {\bf {b}}[s,\dots ],{\text{ mit }}\alpha +\beta =1.\,$
* Sie erfüllt die Diagonal-Eigenschaft:
       ${\bf {b}}[t,\dots ,t]={\bf {b}}(t).\,$

## Berechnung

Da sich jede rationale symmetrische Funktion in $t_{1},\dots ,t_{n}$ als ein Polynom in den elementarsymmetrischen Funktionen
    $\sigma _{1}^{n}=t_{1}+t_{2}+\dots +t_{n}$
    $\sigma _{2}^{n}=t_{1}t_{2}+t_{1}t_{3}+\dots +t_{2}t_{3}+\dots +t_{n-1}t_{n}$
    $\dots$
    $\sigma _{n}^{n}=t_{1}t_{2}t_{3}\dots t_{n}$
schreiben lässt, können wir das Blossom des Polynoms
       ${\bf {b}}(t)={\bf {a}}_{0}+\sum _{i=1}^{n}{\bf {a}}_{i}{\binom {n}{i}}t^{n}$
algebraisch finden als
       ${\bf {b}}[t_{1},\dots ,t_{n}]={\bf {a}}_{0}+\sum _{i=1}^{n}{\bf {a}}_{i}\sigma _{i}^{n}$

## Beispiel

Das Blossom des quartischen Polynoms
    ${\begin{aligned}{\bf {x}}(t)\ &=\ {\bf {a}}_{0}{\binom {4}{0}}t^{0}+{\bf {a}}_{1}{\binom {4}{1}}t^{1}+{\bf {a}}_{2}{\binom {4}{2}}t^{2}+{\bf {a}}_{3}{\binom {4}{3}}t^{3}+{\bf {a}}_{4}{\binom {4}{4}}t^{4}\\&=\ {\bf {a}}_{0}+4{\bf {a}}_{1}t+6{\bf {a}}_{2}t^{2}+4{\bf {a}}_{3}t^{3}+{\bf {a}}_{4}t^{4}\end{aligned}}$
ist das symmetrische, 4-affine Polynom
    ${\begin{aligned}{\bf {x}}[t_{1},\dots ,t_{4}]={\bf {a}}_{0}&+{\bf {a}}_{1}(t_{1}+t_{2}+t_{3}+t_{4})\\&+{\bf {a}}_{2}(t_{1}t_{2}+t_{1}t_{3}+t_{1}t_{4}+t_{2}t_{3}+t_{2}t_{4}+t_{3}t_{4})\\&+{\bf {a}}_{3}(t_{1}t_{2}t_{3}+t_{1}t_{2}t_{4}+t_{1}t_{3}t_{4}+t_{2}t_{3}t_{4})\\&+{\bf {a}}_{4}(t_{1}t_{2}t_{3}t_{4})\end{aligned}}$

## Anwendung
### Blossoming einer Bézierkurve

Am Beispiel einer Bézierkurve vom Grad $n=3$ wird deutlich, wie mittels Blossoming sowohl Kurvenpunkte (im Bild ${\bf {b}}_{0}$ und ${\bf {b}}_{3}$) als auch Kontrollpunkte (im Bild ${\bf {b}}_{1}$ und ${\bf {b}}_{2}$) ermittelt werden können.
Das Blossom der Bézierkurve
    ${\begin{aligned}{\bf {b}}(t)\ &=\ \sum _{i=0}^{3}{\binom {3}{i}}t^{i}(1-t)^{3-i}{\bf {b}}_{i}\\&=\ (1-t)^{3}{\bf {b}}_{0}+3t(1-t)^{2}{\bf {b}}_{1}+3t^{2}(1-t){\bf {b}}_{2}+t^{3}{\bf {b}}_{3}\end{aligned}}$
ist das symmetrische tri-affine Polynom
    ${\begin{aligned}{\bf {b}}[t_{1},t_{2},t_{3}]&={\bf {b}}_{0}(1-t_{1})(1-t_{2})(1-t_{3})\\&+{\bf {b}}_{1}[t_{1}(1-t_{2})(1-t_{3})+(1-t_{1})t_{2}(1-t_{3})+(1-t_{1})(1-t_{2})t_{3}]\\&+{\bf {b}}_{2}[t_{1}t_{2}(1-t_{3})+t_{1}(1-t_{2})t_{3}+(1-t_{1})t_{2}t_{3}]\\&+{\bf {b}}_{3}t_{1}t_{2}t_{3}\end{aligned}}$
Setzen wir für $t_{1},t_{2},t_{3}$ spezielle Werte ein, so ergibt sich:
    ${\begin{aligned}{\bf {b}}_{000}:={\bf {b}}[0,0,0]&={\bf {b}}_{0}\\{\bf {b}}_{001}&={\bf {b}}_{1}\\{\bf {b}}_{011}&={\bf {b}}_{2}\\{\bf {b}}_{111}&={\bf {b}}_{3}\\\end{aligned}}$
Mehr noch, wir können auch die Zwischenpunkte des de-Casteljau-Algorithmus direkt berechnen als:
    ${\begin{aligned}{\bf {b}}_{00t}:={\bf {b}}[0,0,t]&={\color {Green}{\bf {b}}_{0}^{1}}\\{\bf {b}}_{0t1}&={\color {Green}{\bf {b}}_{1}^{1}}\ &{\bf {b}}_{0tt}&={\color {Blue}{\bf {b}}_{0}^{2}}\\{\bf {b}}_{t11}&={\color {Green}{\bf {b}}_{2}^{1}}\ &{\bf {b}}_{tt1}&={\color {Blue}{\bf {b}}_{1}^{2}}\ &{\bf {b}}_{ttt}&={\color {Red}{\bf {b}}_{0}^{3}={\bf {b}}(t)}\\\end{aligned}}$

### Blossoming einer B-Splinekurve

Wir fügen polynomiale Kurven stückweise zusammen zur B-Spline-Kurve
    ${\begin{aligned}{\bf {s}}(u)\ &=\ \sum _{i=1}^{n}{\bf {c}}_{i}N_{i}^{n}(u)\ \end{aligned}}$
mit B(asis)-Splines $N_{i}^{n}$ . Fügt man die zugrundeliegenden Parameter-Intervalle aneinander, so ergeben sie eine Knotenfolge $u_{1},u_{2},\dots ,u_{n}$. Blossoming auf den Teilintervallen führt zu den jeweiligen Bézierkurven bzw. den Kontrollpunkten des de-Casteljau-Algorithmus, also etwa
    ${\begin{aligned}{\bf {s}}_{333}:={\bf {s}}[u_{3},u_{3},u_{3}]&={\bf {b}}_{0}\\{\bf {s}}_{334}&={\bf {b}}_{1}\\{\bf {s}}_{344}&={\bf {b}}_{2}\\{\bf {s}}_{444}&={\bf {b}}_{3}\\\end{aligned}}$
Blossoming über die Teilintervalle hinaus führt zu den Kontrollpunkten des de-Boor-Algorithmus:
    ${\begin{aligned}{\bf {s}}_{123}:={\bf {s}}[u_{1},u_{2},u_{3}]&={\bf {c}}_{0}\\{\bf {s}}_{234}&={\bf {c}}_{1}\\{\bf {s}}_{345}&={\bf {c}}_{2}\\{\bf {s}}_{456}&={\bf {c}}_{3}\\\end{aligned}}$

## Blossom und Oskulante

Zu einer polynomialen Kurve ${\bf {x}}(t)$ vom Grad n definieren wir
    $\Delta _{a}{\bf {x}}(t):={\bf {x}}(t)+{\bf {\dot {x}}}(t){\frac {a-t}{n}}$
als die erste Oskulante von ${\bf {x}}(t)$ zum Knoten $a$. Sie ist eine polynomiale Kurve vom Grad $n-1$ in $t$ und hat mit ${\bf {x}}(t)$ nur den Punkt ${\bf {x}}(a)$ gemeinsam, an welchem die Kurven einen Kontakt der Ordnung $n-1$ haben.
Zu $\Delta _{a}{\bf {x}}$ lässt sich zu einem Knoten $b$ erneut eine Oskulante bestimmen. Sie ist die zweite Oskulante von ${\bf {x}}$ zu den Knoten $a$ und $b$:
    ${\begin{aligned}\Delta _{ab}{\bf {x}}&=\ \Delta _{b}(\Delta _{a}{\bf {x}})\\&=\ \Delta _{b}{\bf {x}}+\Delta _{b}{\big{\bf {\dot {x}}}(t){\frac {a-t}{n}}{\big )}\\&=\ {\bf {x}}+{\bf {\dot {x}}}{\frac {(a-t)+(b-t)}{n}}+{\bf {\ddot {x}}}{\frac {(a-t)(b-t)}{n-1}}\end{aligned}}$

### Eigenschaften der Oskulante

Oskulanten besitzen folgende Eigenschaften:
* Sie sind symmetrisch in den Knoten:
       $\Delta _{ab}{\bf {x}}=\Delta _{ba}{\bf {x}}$
* Sie sind affin in den Knoten: Aus $\ a=p\cdot (1-t)+q\cdot t$ folgt
       $\Delta _{a}{\bf {x}}=(1-t)\cdot \Delta _{p}{\bf {x}}+t\cdot \Delta _{q}{\bf {x}}$
* Ihre Diagonale ist identisch mit der Kurve:
       $\Delta _{t}^{n}{\bf {x}}=\Delta _{t\dots t}{\bf {x}}={\bf {x}}(t)$
Oskulanten wurden 1886 von Stanislaus Jolles in seiner Habilitationsschrift eingeführt. Sie sind im parametrischen Fall identisch mit den Blossoms von de Casteljau und Ramshaw und lassen sich mittels Blossoming einfach herleiten: Für eine kubische Bézierkurve mit den Kontrollpunkten ${\bf {b}}_{000},{\bf {b}}_{001},{\bf {b}}_{011},{\bf {b}}_{111}$ wird die Oskulante zum Knoten $t$ durch die folgenden Bézier-Kontrollpunkte definiert: ${\bf {b}}_{00t},{\bf {b}}_{0t1},{\bf {b}}_{t11}$