2013-04-11 5 views
0

Fondamentalement, je suis curieux si xVel et yVel variables fonctionneraient le mieux, ou si je devrais utiliser une velocity et une variable direction.Le moyen le plus efficace pour gérer la vitesse

En outre, c'est la façon dont il serait traité sur la mise à jour: (psuedocode) Pour xVel et yVel:

x += xVel; 
y += yVel; 

Pour velocity et direction:

x += velocity * (cos(direction)); 
y += velocity * (sin(direction)); 

Note: Je ne suis pas sûr si le second fonctionne correctement. Je n'ai pas de compétences en trigonométrie.

Alors, le premier moyen est-il plus efficace, ou le second? Et suis-je en train de faire le deuxième complètement faux?

Répondre

1

Cela dépend de votre application. Vous pouvez utiliser une fonction arctangente pour trouver la thêta à partir d'un moment donné, bien sûr. Cependant, si vous avez des graphiques qui vont tourner avec l'angle de l'objet, alors vous pouvez coller à polaire. Fondamentalement, la règle de base que j'utilise est la suivante: Si vous traitez des accélérations X et Y ainsi que des vitesses, alors vous voulez coller aux coordonnées rectangulaires et utiliser les variables delta-x et delta-y. Si vous souhaitez gérer la rotation des objets et que l'angle est calculé régulièrement, vous pouvez utiliser polar.

Cela dépend de l'application.

0

Les deux méthodes sont tout aussi efficaces puisqu'elles devraient donner la même réponse. Cependant, je voudrais ajouter un terme supplémentaire à temps étape numérique pour en faire une meilleure « simulation » numérique:

x += xVel * timeStep; 
y += yVel * timeStep; 

Ou

x += totalVel * cos(direction) * timeStep; 
y += totalVel * sin(direction) * timeStep; 

Les deux façons donneraient les mêmes résultats, mais le temps de calcul sera probablement diverger. Si le montant des calculs pour une méthode serait beaucoup plus que l'autre, il est très probable que l'autre sera plus rapide. Mais si vous n'êtes pas sûr, vous pouvez toujours exécuter un script de test dans lequel vous testez plusieurs fois chaque méthode et déterminez le temps dont le processeur a besoin pour les exécuter.

Questions connexes