Aus Das deutschsprachige Scratch-Wiki

Bézier-Kurve

Eine 2D quadratische Bézier-Kurve mit den 3 Punkten, aus denen sie konstruiert wird.

Eine Bézier-Kurve ist eine parametrische Kurve mit mehreren Kontrollpunkten. Sie ist unendlich skalierbar und wird häufig in der Computergrafik verwendet.

Eine Bézier-Kurve mit zwei Kontrollpunkten ist eine lineare Bézier-Kurve (eine Gerade). Drei Punkte ergeben eine quadratische Bézier-Kurve, vier eine kubische. Höhere Ordnungen sind zunehmend ungewöhnlich und mathematisch komplizierter. Bei Kurven mit vielen Kontrollpunkten ist es üblicher, sie aus mehreren Kurven niedrigerer Ordnung zusammenzusetzen.

Dieser Artikel konzentriert sich auf 2-dimensionale Bézier-Kurven, höhere Dimensionen sind jedoch ebenfalls möglich.

Auswertung

Die Auswertung einer parametrischen Kurve bedeutet, einen Punkt auf ihr zu finden, ausgehend von einem Eingabe-Parameter. Der Parameter beschreibt im Wesentlichen, wie weit man sich entlang der Kurve befindet – typischerweise so normiert, dass 0 den Anfang und 1 das Ende der Kurve bedeutet.

Lineare Bézier-Kurve

Lineare Bézier-Kurve

Eine lineare Bézier-Kurve ist lediglich eine lineare Interpolation zwischen zwei Punkten:

define lineare Bézier bei (t) mit Punkten: (x1) (y1) (x2) (y2)
setze [x v] auf ((((1)-(t))*(x1)) + ((t)*(x2)))
setze [y v] auf ((((1)-(t))*(y1)) + ((t)*(y2)))

Quadratische Bézier-Kurve

Quadratische Bézier-Kurve

Eine quadratische Bézier-Kurve wird als lineare Interpolation zweier linearer Bézier-Kurven berechnet:

define quadratische Bézier bei (t) mit Punkten: (x1) (y1) (x2) (y2) (x3) (y3)
setze [x v] auf ((((1)-(t)) * ((((1)-(t))*(x1)) + ((t)*(x2)))) + ((t) * ((((1)-(t))*(x2)) + ((t)*(x3)))))
setze [y v] auf ((((1)-(t)) * ((((1)-(t))*(y1)) + ((t)*(y2)))) + ((t) * ((((1)-(t))*(y2)) + ((t)*(y3)))))

Beispiele:


Kubische Bézier-Kurve

Kubische Bézier-Kurve
define kubische Bézier bei (t) mit Punkten: (x1) (y1) (x2) (y2) (x3) (y3) (x4) (y4)
setze [x v] auf ((((1)-(t))*((((1)-(t))*((((1)-(t)) * (x1)) + (((3)*(t))*(x2)))) + ((((3)*(x3))*(t))*(t)))) + ((((x4)*(t))*(t))*(t)))
setze [y v] auf ((((1)-(t))*((((1)-(t))*((((1)-(t)) * (y1)) + (((3)*(t))*(y2)))) + ((((3)*(y3))*(t))*(t)))) + ((((y4)*(t))*(t))*(t)))

Beispiele:

Siehe auch

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.