En essayant de trouver l'angle (en degrés) entre deux vecteurs 2D. Je sais que je dois utiliser trig mais je ne suis pas très bon avec ça. Voilà ce que je suis en train de travailler (l'axe Y augmente vers le bas): alt text http://i38.tinypic.com/2dcefch.pngComment calculer l'angle d'un vecteur à partir de la verticale?
J'essaie d'utiliser ce code pour le moment, mais il ne fonctionne pas du tout (angles aléatoires calcule pour une raison quelconque) :
private float calcAngle(float x, float y, float x1, float y1)
{
float _angle = (float)Math.toDegrees(Math.atan2(Math.abs(x1-x), Math.abs(y1-y)));
Log.d("Angle","Angle: "+_angle+" x: "+x+" y: "+y+" x1: "+x1+" y1: "+y1);
return _angle;
}
Ce sont mes résultats (Il constante en fournissant une position constante, mais quand je change la position, l'angle change et je ne trouve aucun lien entre les deux angles):
Position 1: x: 100 y: 100 x1: 50 y1: 50 Angle: 45
Position 2: x: 92 y: 85 x1: 24 y1: 16 Angle: 44,58
Position 3: x: 44 ans: 16 x1: 106 y1: 132 Angle: 28.12
Editer: Merci à tous ceux qui ont répondu et m'a aidé à comprendre que c'était faux! Désolé le titre et la question était confuse.
Je doute que ce soit au hasard. Pourriez-vous afficher les valeurs de x1, x, y1, y? La sortie change-t-elle même lorsque l'entrée est constante? – FrustratedWithFormsDesigner
Votre diagramme est incorrect. Vous avez seulement défini 2 points, et il n'y a aucune représentation pour le vecteur qui crée l'angle Thêta. En utilisant, p1 et p2 comme dans ce diagramme, vous trouverez un angle très différent; l'angle p1 et p2 fait avec l'origine. – aepryus
Vous dites que vous essayez de calculer l'angle entre deux vecteurs, mais le diagramme semble impliquer que vous essayez réellement d'obtenir l'angle entre un vecteur et l'axe des ordonnées. Est-ce exact? – Troubadour