Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Bezier-Kurven berechnen

  Alt 25. Okt 2006, 15:40
Du kannst das ganze auch Rekursiv nach De Casteljau lösen und Teilsegmente als Linien zeichnen, sobald Anfangs- und Endpunkt nahe genug beieinander liegen.

Hintergrund: man kann mit relativ simpler Mathematik ein kubisches Spline in der Mitte (t=0,5) zerlegen und auch gleich noch die neuen Stützpunkte berechnen, so dass man dann zwei kleinere Teilkurven erhält.

// Nachtrag

Etwas ausführlicher.

Gehen wir davon aus, du hast die Punkte A0, B0, C0 und D0. A0 ist der Startpunkt, D0 der Endpunkt und B0/C0 sind die Stützpunkte.

Du möchtest die Kurve bei t aus ]0, 1[ zerlegen (0 entspricht A0, 1 entspricht D0).

Schritt 1: Teile die Strecken (A0 B0), (B0 C0) und (C0 D0) jeweils bei t.
A1 = (1-t) A0 + t B0
B1 = (1-t) B0 + t C0
C1 = (1-t) C0 + t D0

Schritt 2: Teile diese neuen Strecken (A1 B1) und (B1 C1) wiederum bei t.
A2 = (1-t) A1 + t B1
B2 = (1-t) B1 + t C1

Schritt 3: Teile die Strecke (A2 B2) noch einmal bei t.
A3 = (1-t) A2 + t B2

Ergebnis:
Den Pfad (A0 B0 C0 D0) kannst du jetzt zerlegen in die beiden Teilpfade (A0 A1 A2 A3) und (A3 B2 C1 D0).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat