Sto cercando di scoprire l'angolo (in gradi) tra due vettori 2D. So che ho bisogno di usare trig ma non ne sono troppo bravo. Questo è quello che sto cercando di capire (l'asse Y aumenta verso il basso): alt text http://i38.tinypic.com/2dcefch.pngCome calcolare l'angolo di un vettore dalla verticale?
Sto cercando di utilizzare questo codice al momento, ma non sta funzionando affatto (calcola gli angoli casuali per qualche motivo) :
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;
}
Questi sono i miei risultati (ci costante nel fornire una posizione costante, ma quando cambio la posizione, l'angolazione cambia e non riesco a trovare alcun collegamento tra i due angoli):
posizione 1: x: 100 y: 100 x1: 50 y1: 50.210 Angolo: 45
montaggio 2: x: 92 y: 85 x1: 24 y1: 16 Angolo: 44.58
posizione 3: x: 44 Y: 16 x1: 106 y1: 132 Angolo: 28,12
Modifica: Grazie a tutti quelli che hanno risposto e mi hanno aiutato a capire che era sbagliato! Scusa il titolo e la domanda è stata confusa.
Dubito che sia casuale. Potresti postare i valori di x1, x, y1, y? L'uscita cambia anche quando l'ingresso è costante? – FrustratedWithFormsDesigner
Il tuo diagramma non è corretto. Hai definito solo 2 punti e non esiste alcuna rappresentazione per il vettore che crea l'angolo Theta. Usando, p1 e p2 come in questo diagramma troverai un angolo molto diverso; l'angolo p1 e p2 fanno con l'origine. – aepryus
Si dice che si sta tentando di calcolare l'angolo tra due vettori ma il diagramma sembra implicare che si stia effettivamente cercando di ottenere l'angolo tra un vettore e l'asse y. È corretto? – Troubadour