Ich möchte ein Land für ein Motocross-Spiel zeichnen. Ich habe an Bezier Curves gedacht, bin mir aber nicht sicher, ob dies der beste Ansatz ist. Kannst du mir einen Rat geben? Ich möchte es in JavaScript machen, keine sehr gute Wahl, aber es ist ein persönliches Projekt, also ist es vorerst in Ordnung.
algorithm
linear-algebra
Unendlichkeit
quelle
quelle
Antworten:
Anstelle von Bezier möchten Sie wahrscheinlich B-Splines oder Catmull-Rom-Splines.
Verwendung: t reicht von 0 bis 1, wobei der Wert den Spline zwischen zwei Kontrollpunkten interpoliert und die Gleitkommazahlen p0, p1, p2 und p3 die Kontrollpunkte darstellen (vorherige, aktuelle, nächste und die folgenden). Um n-dimensionale Kurven zu interpolieren, rufen Sie die Funktionen einfach einmal pro Achse auf.
Der praktische Unterschied zwischen bsplines und catmull-rom besteht im Wesentlichen darin, dass catmull-rom alle Kontrollpunkte durchläuft, während bsplines glatter sind.
quelle
float it = 1.0f - t
und die Verwendungit
für denb0
Wert? Warum das für die bspline und nicht für die catmull rom?Ich habe einige Links gefunden, die für andere nützlich sein könnten:
Beispielskript der Bezier-Implementierung in JS
http://jsfromhell.com/math/bezier
Es kann aus JavaScript oder ActionScript verwendet werden, um entlang eines Bezierpfads zu animieren.
http://code.google.com/p/javascript-beziers/
Online-Zeichnungsskript / -plot, sehr nützlich, wenn Sie einige Tests durchführen möchten
http://jsdraw2d.jsfiction.com/demo/curvesbezier.htm
Ein bisschen Theorie und ein Implementierungsbeispiel
http://13thparallel.com/archive/bezier-curves/
quelle