2017-06-20 2 views
0

Je crée un jeu où, au départ, la balle doit aller dans une direction aléatoire sur la toile html, mais tous les moyens ont la même vitesse. Ce n'est pas ce que je dois:formule de vecteur de vitesse aléatoire

vx = Math.floor(Math.random() * 20) 
vy = Math.floor(Math.random() * 20) 

Parce qu'il ne donnera pas une vitesse constante. Pourriez-vous s'il vous plaît imaginer une formule? Merci.

Répondre

2

Vous voulez donc une vitesse constante avec une direction aléatoire? Ensuite, utilisez

phi = 2*Math.PI*Math.random(); 
vx = speed * Math.cos(phi); 
vy = speed * Math.sin(phi); 
+0

Pour une raison quelconque, pour moi, il ne restera pas toujours à une vitesse constante – kcode

+0

Vous devez documenter ce qui se passe à côté du vecteur vitesse. (Et peut-être comment vous mesurez la vitesse scalaire.) – LutzL

0

Je suppose que vous travaillez en Java et que vous voulez un vecteur aléatoire d'une magnitude de 20? D'abord, votre vecteur n'est pas vraiment aléatoire pour commencer. Math.random() donne un nombre positif entre 0 et 1, donc votre vecteur pointe toujours vers le même quadrant du système de coordonnées (avec les deux coordonnées positives). Je pense que ce que vous voulez est quelque chose comme Math.random() * 2 - 1 pour créer des coordonnées entre -1 et 1.

Deuxièmement, vous devez normaliser votre vecteur: http://mathworld.wolfram.com/NormalizedVector.html

Enfin, il faut multiplier les coordonnées du vecteur de la magnitude que vous voulez que votre vecteur ait, dans votre cas 20, probablement.

+0

Pourriez-vous fournir un exemple de code, comme dans la réponse ci-dessus? – kcode

+0

btw im travailler en javascript et pas java – kcode