Frage

Die Giersteigung und Rolle Wir bekommen von der Sensormanager von Android.Getorientation () sind alle für die Y-Achse des Telefons.Damit meine ich, das Gier und die Tonhöhe sagen, wo die Y-Achse zeigt, und die Rolle ist um die yachse.(und meine Bildschirmorientierung ist an LandSepe befestigt, so dass sich die Y-Achse nicht ändert).Aber was ich will, ist das giersteigende und rollen der negativen Z-Achse (Punkte in das Telefon), eher, wenn mein Telefonbildschirm ein Landschaftsfenster in einem Cockpit eines Flugzeugs ist, was würde das Gier sein?Tonhöhe und Rolle sein?

War es hilfreich?

Lösung

Wenn ich verstehe, was Sie sagen, sehen Sie den aktuellen YAW-Tonhöhen und rollen Sie die Rolle, als ob die + y-Achse der Standard-Vektor der "Vorderseite" war, und die + Z-Achse waren der Standard-up '-Vektor. Sie möchten eine koordinatische Transformation ausführen, so dass Ihr Gier, der Tonhöhe und Ihr Rollen mit der -z-Achse als Standard-"Front-Vektor" als Standard-"Front" -Ver-Vektor als Standard-Up-Vektor berechnet werden.

Erstens müssen Sie die aktuellen Front- und Aufwärtsvektoren von Ihrem Gier, Tonhöhen und Rollen in der aktuellen Konfiguration berechnen. Dies kann mit 3D-Rotationsmatrizen erfolgen: http://de.wikipedia.org/wiki/rotation_matrix#rotations_in_three_matrix#rotations_in_three_dimensions

Verwenden Sie den Gierwinkel, um sich um Z zu drehen, Tonhöhe als Drehung um x, und rollen Sie als Rotation um y. Multiplizieren Sie diese Matrizen zusammen, multiplizieren Sie dann den vorderen Vektor (0, 1, 0) und den Vektor (0, 0, 1) durch das Ergebnis, um Ihre neuen Front- und Aufbauteile zu erhalten.

Nächstes müssen Sie die neuen Gier-, Pitch- und Rollenwinkel berechnen. Gier ist der Winkel zwischen dem vorderen Vektor, der in die yz-Ebene projiziert ist (X-Wert auf 0 eingestellt) und der -z-Vektor (0, 0, -1), der Tonhöhe ist der Winkel zwischen dem vorderen Vektor, der auf die XZ-Ebene und der - Z-Vektor, und Roll ist der Winkel zwischen dem Aufwärtsvektor, der auf die XY-Ebene und den + X-Vektor (1, 0, 0) projiziert wird. Wenn wir FX= die X-Komponente des vorderen Vektors lassen, ist der FY die Y-Komponente, und so erhalten wir: generasacodicetagpre.

Sie sollten dies für andere Vektoren tun können, wenn ich die falschen ausgewählt habe.

Andere Tipps

Die in Android verwendeten Körperachsenkonventionen sind nicht gleich wie in der Luft- und Raumfahrt (aus guten Gründen).Die X-Achse einer "Ebene" ist der äquivalente "y" -Axe der und der Android-Vorrichtung (und die X-Achse ebenfalls mit der y-Achse, positiv oder negativ in Abhängigkeit von ENU RO NED-Connevntien).Ein guter Artikel über YAW Pitch-Ans-Roll-Konventionen finden Sie hier, und es ist möglicherweise ein Start, um Ihre Frage zu beantworten: http://www.sensorplatforms.com/understanding-orientation-conventions-mobile-platforms/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top