J'ai des objets dans mon jeu qui sont "jetés". Pour l'instant, j'essaie de mettre en œuvre cela en faisant suivre à ces objets une courbe parabolique. Je connais le point de départ, le point final, le sommet et la vitesse de l'objet.
- Comment puis-je déterminer à un moment ou à un cadre donné quelles sont les coordonnées x & y?
- Une courbe parabolique est-elle même la bonne courbe à utiliser?
physics
projectile-physics
Ben Williams
la source
la source
Réponses:
Qu'est-ce que vous cherchez pour un tracé paramétrique de la fonction parabolique. Il est plus simple de faire en sorte que la fonction paramétrique utilise une plage de p ∈ [0,1].
La forme canonique d'une parabole paramétrique est
En utilisant cette formule et une algèbre de base pour le morphing de fonction et j'ai
Donc, pour obtenir ces fonctions, vous obtiendrez les chiffres que vous recherchez.
la source
f_x
utilise sa demi-vitesse? Vous devriez le faire etf_y
a
x(t) = x0 + vx0*t
y(t) = y0 + vy0*t + .5*ay*t*t
a
ett
n'étaient que des noms mal choisis. Vous devriez remarquer qu'il n'y a pas de composante de vitesse dans les formules. Le mouvement d'Euler et les paraboles paramétriques ne sont pas la même chose, mais ils sont très similaires car le vol balistique trace un chemin parabolique.Trouver l'équation d'une courbe selon laquelle vous voulez que votre objet se déplace est une façon d'accomplir ce que vous voulez, mais probablement pas la meilleure.
Au lieu de cela, on garde généralement une trace des propriétés locales d'un objet (vitesse, accélération) et utilise ensuite ces valeurs pour mettre à jour la position de l'objet à chaque image.
Puisque vous avez mentionné une parabole, je suppose que vous lancez une balle en 2D et que vous voulez qu'elle tombe le long de l'axe des y. Ainsi, votre objet a une accélération constante dans la direction y (appelons cela
g
) et aucune accélération dans la direction x. Lorsque l'objet est lancé, il reçoit une certaine vitesse, appelons celavx
etvy
.Ensuite, à chaque image de votre application, vous ajouteriez l'accélération de l'objet à sa vitesse, puis vous ajoutiez sa vitesse à sa position. Quelque chose comme:
Faites-le à chaque image et votre balle commencera à bouger. Il y a beaucoup plus à savoir à ce sujet, mais c'est un début.
la source
La réponse de Brandon est assez bonne, mais si vous cherchez quelque chose de plus avancé, vous voudrez peut-être consulter l'interpolation linéaire: http://en.wikipedia.org/wiki/Linear_interpolation
De plus, si votre courbe est une fonction, vous pouvez connaître les coordonnées x et y (et z) à un instant donné. Cela pourrait aussi aider: http://www.ucl.ac.uk/Mathematics/geomath/level2/fvec/fv8.html#l1
la source
Dans les jeux sur console, nous utilisons souvent l' interpolation bicubique pour résoudre ce problème. Tout d'abord, échantillonnez la position d'un objet à intervalles réguliers de temps t. Pour un projectile, ajoutez l'accélération gravitationnelle [0, dy / dt / dt] à sa vitesse [dx / dt, dy / dt] à chaque intervalle. Enregistrez toutes les coordonnées [x, y] ainsi générées dans un tableau.
Plus tard, pour reconstruire la position de l'objet [x, y] pour un t donné, lisez les quatre échantillons les plus proches de ce t dans le tampon que vous avez enregistré: [t-1, t, t + 1, t + 2]. Mélangez les quatre échantillons selon les coefficients de l'article wikipedia lié pour obtenir un mouvement fluide dans l'espace.
Ce n'est pas aussi précis physiquement que d'effectuer des calculs physiques à la volée, mais cela permet une licence artistique et une économie d'échelle pour aider votre simulation.
la source