Windows Phone - poziomica i AccelerometerReading

0

Piszę aplikację poziomicę, jest już prawie gotowa jednak chciałbym dodać aby na ekranie były wypisywane stopnie. Sensor jaki używam to akcelerometr, który zwraca mi 3 odczyty dla X/Y/Z :

"Gets the g-force acceleration along the x-axis."

Podobnie dla x i z. Jak takie wartości odczytane z akcelerometru mogę przekonwertować na stopnie?

0

Dla ustawienia poziomego: float degrees = Math.Atan2(x, y) * 180 / Math.PI.

Ogólnie, do wykrywania obrotu urządzenia możesz zastosować żyroskop, który będzie o wiele dokładniejszy: http://msdn.microsoft.com/en-us/library/windows/apps/hh202943%28v=vs.105%29.aspx

0

Dość dziwne wyniki mi daje ten kod :/

0

Przy ustawieniu telefonu w pionie powinien ci ten kod zwrócić 180 stopni, do góry nogami 0 stopni, na jednym i drugim boku 90 oraz -90 stopni.

Jeżeli sobie zrobisz Math.Atan2(e.SensorReading.Acceleration.Y, e.SensorReading.Acceleration.X) * -180 / Math.PI to na prawym boku będziesz miał 0 stopni, na lewym 180 stopni, a w pionie 90 stopni.

WinRT udostępnia ci klasę Inclinometer (http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.sensors.inclinometer%28v=win.10%29.aspx) która od razu robi to, co chcesz - zwraca wartości obrotu według osi x, y, i z w stopniach.

0

Dziękuję bardzo jednak wszystko działa jak należy ! :) Możesz powiedzieć albo jakimś linkiem podać skąd taki wzór i dlaczego tak ? :)

0

Atan2 to odwrotna funkcja trygonometryczna - arcus tangens, tylko w wersji dwuargumentowej.

For any real number (e.g., floating point) arguments x and y not both equal to zero, atan2(y, x) is the angle in radians between the positive x-axis of a plane and the point given by the coordinates (x, y) on it. The angle is positive for counter-clockwise angles (upper half-plane, y > 0), and negative for clockwise angles (lower half-plane, y < 0).

Mnożenie przez 180 i dzielenie przez liczbę pi, to z kolei konwersja na stopnie z radianów.

http://www.freescale.com/files/sensors/doc/app_note/AN3461.pdf (chyba równanie 25, tylko wersja uproszczona, bo ignorujemy jedną oś obrotu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1