2009-12-07 9 views
1

Ok Je travaille sur une simulation spatiale et comme la plupart des simulations spatiales, je dois m'entraîner là où les adversaires seront embarqués (la position 3d) quand ma balle l'atteindra. Comment puis-je calculer cela à partir de la vitesse de déplacement des balles et de la vitesse de l'adversaire?Problème simple - Vélocité et collisions

+0

Vous voudrez peut-être essayer http://mathoverflow.net – kindohm

+0

J'ai déjà donné une réponse à la question * a *. Mais en relisant cela, je ne suis pas sûr de la question que vous avez posée. Voulez-vous savoir si l'angle sur lequel vous avez tiré est atteint? Ou voulez-vous savoir quel angle prendre? (J'ai répondu à ce dernier). –

Répondre

1

Calculez le vecteur de vitesse relative entre lui et vous: cela pourrait être considéré comme son mouvement si vous étiez immobile. Calculez son vecteur de distance relative. Maintenant vous savez qu'il est déjà parti et déplace V à chaque unité de temps. Vous avez V 'à calculer, et vous savez que c'est la longueur mais pas la direction.

Maintenant, vous construisez un triangle avec ces deux contraintes, son V et votre balle V '. En deux dimensions, il avait l'air comme:

Dx+Vx*t = V'x*t

Dy+Vy*t = V'y*t

V'x^2 + V'y^2 = C^2

ce qui simplifie à:

(Dx/t+Vx)^2 + (Dy/t+Vx)^2 = C^2

Et vous pouvez utiliser la formule quadratique pour résoudre cette. Vous pouvez appliquer cette technique en trois dimensions de la même manière. Il y a d'autres façons de résoudre cela, mais c'est juste de l'algèbre simple au lieu du calcul vectoriel.

+0

Comme quelqu'un l'a souligné, il y a un problème d'IF, par exemple si le vaisseau est plus rapide que la balle, alors il est très probable que votre balle n'arrivera jamais. Dans ce cas, la formule quadratique retournera un nombre complexe. –

1

Ajouter la vitesse négative du navire à la balle, de sorte que seules les balles se déplace. Calculez ensuite l'intersection de la forme du vaisseau et de la ligne le long de laquelle la balle se déplace (* pos -> pos + vel * dt *).

0

La question ne devrait probablement pas être «où le navire sera quand la balle l'atteindra», mais SI la balle l'atteint. En supposant une trajectoire linéaire et une vitesse constante, calculez l'intersection des deux vecteurs, l'un représentant la trajectoire du projectile et l'autre représentant celle du navire. Vous pouvez ensuite déterminer l'heure à laquelle chaque objet (navire et balle) atteint ce point en divisant la distance entre la position d'origine et la position d'intersection par la vitesse de chacun. Si les heures correspondent, vous avez une collision et l'endroit où elle se produit. Si vous avez besoin d'une détection de collision plus précise, vous pouvez utiliser quelque chose comme un simple arbre BSP qui vous donnera non seulement un moyen rapide de déterminer les collisions, mais sur quelle surface la collision s'est produite et, si elle est correctement emplacement de la collision. Cependant, il peut être difficile de maintenir un tel arbre dans un environnement dynamique.