Listen Sie hier die häufigsten Splines in der Spieleentwicklung auf, wie viele Punkte die Methode zum Interpolieren einer Kurve benötigt und wie Sie einen Datentyp erstellen können, mit dem Sie eine Interpolation der Kurvenpunkte erhalten. Beispiele: Bezierkurven, B-Splines, Cubic Splines usw.
PS: Ich stelle dies als Community-Wiki ein, damit wir alle Arten der Spline-Interpolation auflisten können.
mathematics
splines
Chiguire
quelle
quelle
Antworten:
Der einfachste Fall ist eine lineare Interpolation für eine gerade Linie:
(x0, y0) * ------------------------ * (x1, y1)
Angenommen, t liegt zwischen [0, 1]:
quelle
Catmull-Rom-Splines (eine Art kubischer Hermite-Spline) können sehr nützlich sein, wenn Sie eine Reihe von Punkten haben, zwischen denen Sie einen glatten Pfad erstellen möchten (ohne zusätzliche Kontrollpunkte zu definieren), z. B. Kamerapfade
Für alle Mathematik siehe:
http://en.wikipedia.org/wiki/Cubic_Hermite_spline
Wenn Sie D3DX verwenden, gibt es einige praktische Funktionen, um damit umzugehen (D3DXVec3CatmullRom).
quelle
Bearbeiten: Entschuldigung, wie Jason im Kommentar betont, handelt die folgende Antwort nicht von Splines, sondern von zweidimensionaler linearer (oder bilinearer ) Interpolation. Ich entscheide mich, es nicht zu löschen, falls jemand es informativ findet.
Ich habe ein einfaches 3D-Terrain erstellt und wollte dann, dass mein Charakter über das Terrain läuft. Um die Höhe des Charakters an einem beliebigen Punkt im Gelände zu ermitteln, habe ich die bilineare Interpolation verwendet .
Hier ist der Java-Code, den ich für die bilineare Interpolation verwende:
Beachten Sie, dass die bikubische Interpolation eine gleichmäßigere oder realistischere Interpolation über entfernte Punkte hinweg ermöglichen kann. Aber ich entscheide mich für bilinear, weil ich ein dichtes Gitter habe, um zu optimieren (vielleicht vorzeitig).
quelle