Bézierpunkte → Quadratische Funktion

Kürzlich zeigte ich, wie man zu einer quadratischen Funktion die passenden Bézierpunkte findet. Wie man umgekehrt in der Ebene zu den Kontrollpunkten einer Bézierkurve $P_0, P_1, P_2$, die nicht alle auf einer Geraden liegen, die Koeffizienten $a, b, c$ und Intervallgrenzen $[d, e]$ für die entsprechende quadratische Funktion $f(x) = ax^2 + bx + c$ findet, darum geht es auf dieser Seite.

Doch nicht jede quadratische Bézierkurve lässt sich in eine solch einfache Funktion mit zugehörigem Intervall übersetzen. Zwar beschreiben beide Objekte Parabelabschnitte und alle Parabeln sind einander ähnlich, doch bei quadratischen Funktionen öffnen sich die Parabeln im kartesischen Koordinatensystem immer parallel zur Ordinate (y-Achse), während die Parabel zur Bézierkurve mit ihrer Symmetrieachse in eine beliebige Richtung zeigen kann.

Wenn wir mit $x_0, y_0$ und $x_1, y_1$ sowie $x_2, y_2$ die Koordinaten der Bézierpunkte $P_0, P_1, P_2$ bezeichnen, entspricht die Bézierkurve unter den Voraussetzungen $x_0\neq x_2$ und

$$x_1 = \frac{x_0+x_2}{2}$$ (1)

dem Graphen einer quadratischen Funktion. Sind die Voraussetzungen erfüllt, lassen sich die Intervallgrenzen und Koeffizienten wie folgt berechnen:

$$[d, e] = [x_0, x_2]$$$$a = \frac{y_0-2y_1+y_2}{(x_2-x_0)^2}$$$$b = -\frac{2x_2y_0-4x_1y_1+2x_0y_2}{(x_2-x_0)^2}$$$$c = \frac{x_2^2y_0-2x_0x_2y_1+x_0^2y_2}{(x_2-x_0)^2}$$

Der Rest dieser Seite dient der Herleitung dieser Formeln für die Koeffizienten $a, b, c$.

Vorüberlegungen

Wir werden die Tangentensteigungen der Parabel an den Stellen $x_0$ und $x_2$ nutzen. Allgemein gibt die Ableitung

$$f'(x) = 2ax + b$$ (2)

die Steigungen der Tangenten an allen Stellen einer quadratische Funktion $f(x) = ax^2+bx+c$ wieder.

Bei quadratischen Bézierkurven ist die Gerade durch $P_1$ und $P_0$ die Tangente der Kurve im Punkt $P_0$ und die Gerade durch $P_1$ und $P_2$ die Tangente der Kurve im Punkt $P_2$.

Da bei quadratischen Bézierkurven die Geraden durch einen äußeren und den mittleren Kontrollpunkt Tangenten der Kurve in den äußeren Kontrollpunkten sind, können wir deren Steigungen auch aus den bekannten Koordinaten der Punkte errechnen:

$$f'(x_0) = \frac{y_1-y_0}{x_1-x_0}$$$$f'(x_2) = \frac{y_2-y_1}{x_2-x_1}$$

Ersetzen wir $x_1$ jeweils gemäß Voraussetzung (1), so erhalten wir daraus die folgenden Gleichungen:

$$f'(x_0) = 2\frac{y_1-y_0}{x_2-x_0}$$ (3)
$$f'(x_2) = 2\frac{y_2-y_1}{x_2-x_0}$$ (4)

Koeffizient a

Um den Koeffizienten a zu ermitteln, nehmen wir die Ableitung (2) und subtrahieren ihren Wert an der Stelle $x_0$ von ihrem Wert an der Stelle $x_2$:

$$f'(x_2)-f'(x_0) = 2ax_2+b-(2ax_0+b)$$

Dabei geht auf der rechten Seite b verloren und wir stellen nach a um:

$$a = \frac{f'(x_2)-f'(x_0)}{2(x_2-x_0)}$$

Entsprechend der Gleichungen (3) und (4) ersetzen wir die Funktionswerte der Ableitung:

$$a = \frac{2\frac{y_2-y_1}{x_2-x_0}-2\frac{y_1-y_0}{x_2-x_0}}{2(x_2-x_0)}$$

Wir kürzen die 2en heraus und fassen als Ergebnis zusammen:

$$a = \frac{y_0-2y_1+y_2}{(x_2-x_0)^2}$$ (5)

Koeffizient b

Für den nächsten Koeffizienten beginnen wir mit der nach b umgestellten Ableitung (2) an der Stelle $x_0$.

$$b = f'(x_0)-2ax_0$$

Darin können wir $f'(x_0)$ gemäß (3) sowie a gemäß Gleichung (5) ersetzen:

$$b = 2\frac{y_1-y_0}{x_2-x_0}-2\frac{y_0-2y_1+y_2}{(x_2-x_0)^2}x_0$$

Den Bruch auf einen Nenner gebracht und zusammengefasst bleibt:

$$b=-2\frac{x_2y_0-(x_0+x_2)y_1+x_0y_2}{(x_2-x_0)^2}$$ (6)

Laut Voraussetzung (1) können wir $(x_0+x_2)$ noch durch $2x_1$ ersetzen und erhalten:

$$b=-\frac{2x_2y_0-4x_1y_1+2x_0y_2}{(x_2-x_0)^2}$$

Koeffizient c

Für den letzten Koeffizienten schauen wir auf die nach c umgestellte quadratische Funktion an der Stelle $x_0$:

$$c = f(x_0)-ax_0^2-bx_0$$

Darin ersetzen wir $f(x_0)$ durch $y_0$, a gemäß (5) und b gemäß (6):

$$c = y_0 - \frac{y_0-2y_1+y_2}{(x_2-x_0)^2}\cdot x_0^2 + 2\frac{x_2y_0-(x_0+x_2)y_1+x_0y_2}{(x_2-x_0)^2}\cdot x_0$$

Auf einen Nenner gebracht und zusammengefasst ergibt das unser Ergebnis:

$$c = \frac{x_2^2y_0-2x_0x_2y_1+x_0^2y_2}{(x_2-x_0)^2}$$