Próbuję znaleźć kąt (w stopniach) między dwoma wektorami 2D. Wiem, że potrzebuję używać trig, ale nie jestem z nim zbyt dobry. Właśnie to staram się wypracować (oś Y rośnie w dół): alt text http://i38.tinypic.com/2dcefch.pngJak obliczyć kąt wektora od pionu?
Próbuję użyć tego kodu w tej chwili, ale to nie działa w ogóle (oblicza przypadkowe kąty z jakiegoś powodu) :
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;
}
są to moje wyniki (jest stała, gdy zapewnienie stałej pozycji, ale przy zmianie pozycji, zmiany kąta i nie mogę znaleźć żadnego związku między tymi dwoma kątami):
stanowisko 1: x: 100 y: 100 x1: 50 y1: 50 Kąt: 45
Pozycja 2: X: 92 r: 85 X1: 24 Y1 16 Kąt: 44,58
Pozycja 3: X: 44 r: 16 X1: 106 y1: 132 Kąt: 28.12
Edycja: Dziękuję wszystkim, którzy odpowiedzieli i pomogli mi dowiedzieć się, że było źle! Niestety tytuł i pytanie były mylące.
wątpię, że to przypadkowe. Czy możesz podać wartości x1, x, y1, y? Czy wyjście zmienia się, nawet jeśli wejście jest stałe? – FrustratedWithFormsDesigner
Twój diagram jest niepoprawny. Zdefiniowałeś tylko 2 punkty i nie ma reprezentacji dla wektora, który tworzy kąt Theta. Używając, p1 i p2 jak na tym diagramie znajdą bardzo różny kąt; kąt p1 i p2 tworzą się z punktem początkowym. – aepryus
Mówisz, że próbujesz obliczyć kąt między dwoma wektorami, ale diagram zdaje się sugerować, że faktycznie próbujesz uzyskać kąt między jednym wektorem a osią Y. Czy to jest poprawne? – Troubadour