Bezier-Kurve


Eine Bezier-Kurve ist eine parametrische Kurve, deren Verlauf durch bestimmte Kontrollpunkte gegeben ist b0, b1 ... bn. Der erste und letzte Kontrollpunkt sind die jeweiligen Endpunkte der Kurve, die Zwischenpunkte liegen dabei nicht auf der Kurve und wirken sich auf den Kurvenverlauf aus. Die Basis die von einer Bezier-Kurve verwendet wird sin die Bernsteinpolynome, in unserem Beispiel von Grad 3. Dadurch hat eine Bezier-Kurve dieses als ihre Gewichtsfunktion und weißt folgende Eigenschaften auf

  • Partion der 1
  • Nur Zahlen größer als 0 werden beachtet
  • Für t = 0 liegt die Kurve im Punkt b0
  • Für t = 1 liegt die Kurve im Punkt b1
  • In der ersten Hälfte der Bezierkurve ist der Wert von b1(t) am größten, die Kurve wird zu b1 hingezogen
  • In der zweiten Hälfte der Bezierkurve ist der Wert von b2(t) am größten, die Kurve wird zu b2 hingezogen
b0
b1
b2
b3

de Castlejau-Algorithmus


Der de Castlejau-Algorithmus ist eine sehr effiziente und numerische stabile Methode einen Punkt P auf einer Bezierkurve in einem Intervall t[0,1] zu berechnen. Die Gewichtung von t teilt dabei die Strecke von 2 Kontrollpunkten im Radius t:1-t ein. Die Funktionsweise vom de Castlejau-Algorithmus ist dabei die folgende, von den gegebenen Kontrollpunkten werden durch Lineare Interpolation, Zwischenpunkte bestimmt. Dieses Verfahren wird so lange rekursiv durch geführt bis nur noch ein Punkt vorhanden ist. Nach der 1.ten Iteration erhält man bei unserem Beispiel 3 Zwischenpunkte (hier grün dargestellt), diese werden nun auch wieder im Radius t:1-t geteilt, es ergeben sich 2 Zwischenpunkte (hier blau dargestellt). Nach einer weiteren Iteration erhält man nun einen Punkt(t) der auf der Bezierkurve liegt. Iteriert man nun über das Intervall t[0,1] und verbindet die hierbei enstehenden Punkte erhält man eine Bezier-Kurve (hier in rot dargestellt).

Zusammenhang de-Castlejau-Algorithmus und kubischen Bernsteinpolynomen


Wie der de-Castlejau-Algorithmus, sind die Bernsteinpolynome ein Weg um den Verlauf einer Bezier-Kurve zu ermitteln. Bei gegebenen Kontrollpunkten und einen Parameter t erhält man identische Ergebnisse egal welche Methode man verwendet. Da die Auswertung der Bernsteinpolynome einen höheren Rechenaufwand benötigt wird die Methode des de-Castlejau bevorzugt. Der De-Castlejau-Algorithmus lässt sich aus den Bernsteinpolynomen ableiten, er ist also die rekursive Berechnung der Bernsteinpolynome. Durch Iteration der gegebenen Kontrollpunkte

\(b0(t) = b0, b1(t) = b1, b2(t) = b2, b3(t) = b3\)
ergeben sich die Bernsteinpolynome 3.Grades

\((1-t)^3 * b0 + 3 * t * (1-t)^2 + b1 + 3 * t^2 * (1-t) * b2 + t^3 * b3\)
Wenn man nun die gegebenen Kontrollpunkte in die einzelnen Basis-Bernsteinpolynome einsetzt und diese dann addiert erhält man auch wieder einen Punkt P(t) im Bereich t[0,1] der auf der gewünschten Bezier-Kurve liegt
Die einzelne Bernsteinpolynome sind:

  • b0 = \((1-t)^3\)
  • b1 = \(3 * t * (1-t)^2\)
  • b2 = \(3 * t^2 * (1-t)\)
  • b3 = \(t^3\)