Énumérez ici les splines les plus courantes dans le développement de jeux, le nombre de points dont la méthode a besoin pour interpoler une courbe et comment pouvez-vous créer un type de données qui vous permet d'obtenir une interpolation des points de la courbe. Exemples: courbes de Bézier, splines B, splines cubiques, etc.
PS: Je mets cela en tant que wiki communautaire afin que nous puissions répertorier toutes sortes d'interpolation spline.
mathematics
splines
chiguire
la source
la source
Réponses:
Le cas le plus simple est une interpolation linéaire pour une ligne droite:
(x0, y0) * ------------------------ * (x1, y1)
Disons que t est compris entre [0, 1]:
la source
Les splines Catmull-Rom (un type de spline hermite cubique) peuvent être très utiles, si vous avez un ensemble de points que vous souhaitez créer un chemin lisse entre (sans définir de points de contrôle supplémentaires), tels que des chemins de caméra
Pour tous les calculs, voir:
http://en.wikipedia.org/wiki/Cubic_Hermite_spline
Si vous utilisez D3DX, il existe des fonctions pratiques pour les gérer (D3DXVec3CatmullRom)
la source
Edit: Désolé, comme Jason le souligne dans le commentaire, la réponse suivante ne concerne pas les splines mais l' interpolation linéaire (ou bilinéaire ) bidimensionnelle . Je choisis de ne pas le supprimer au cas où quelqu'un pourrait le trouver informatif.
J'ai créé un terrain 3D simple et j'ai ensuite voulu que mon personnage traverse le terrain. Donc, pour trouver la hauteur du personnage à n'importe quel point du terrain, j'ai utilisé une interpolation bilinéaire .
Voici le code Java que j'utilise pour l'interpolation bilinéaire:
Notez que l'interpolation bicubique peut présenter une interpolation plus douce ou plus réaliste sur des points distants; mais je choisis d'aller avec bilinéaire car j'ai une grille dense, dans une tentative d'optimisation (peut-être prématurément).
la source