2016-04-26 12 views
1

zuordnen Ich bekomme den Vektor (Ax, Ay, Az) aus dem Beschleunigungsmesser. Ich kenne mein Telefonkoordinatensystem und das Weltkoordinatensystem, wenn mein Telefon auf dem Tisch mit der Oberseite nach Norden liegt. Aber wenn ich die Position des Telefons ändere, ist das Koordinatensystem nicht dasselbe und benötigt eine Neuabbildung. Zu diesem Zweck brauche ich eine Rotationsmatrix, um Dinge zu reparieren. Kann aber die Rotationsmatrix nicht bestimmen. Ich habe versucht, wie Lauffläche folgen und kein GlückWie Gerät-Koordinatensystem zu Welt-Koordinatensystem in Android

Not able to translate device co-ordinate system to world co-ordinate system on android

So ist es eine Möglichkeit, die Drehmatrix erhalten kann und die Zuordnung in android durchführen?

Ich habe versucht, die Vektoren mit der Rotationsmatrix der drei Achsen zu multiplizieren. Aber es gab kein befriedigendes Ergebnis. Wie der vom Beschleunigungsmesser ermittelte Winkel nicht korrekt ist. Auch ich denke, die Rotationsmatrix dient nicht dem Zweck.

rotation matrix

+0

können Sie bitte zeigen Sie uns Ihren Code, was haben Sie schon versucht? – Mostafiz

Antwort

1

Für diesen Zweck liefert android SensorManager die Schwerkraftsensordaten und der magnetischen Sensordaten gegeben. Zuerst der Schwerkraftsensor (Beschleunigungsmesser) und der magnetische Sensor. Deklarieren Sie Arrays und speichern Sie Daten für sie. Die Rotationsmatrix wird zum Speichern von Rotationsmatrixdaten verwendet. temp [] zum temporären Speichern von Daten.

private static final float rotation[] = new float[9]; 
private static final float temp[] = new float[9]; 
private static final float grav[] = new float[3]; 
private static final float mag[] = new float[3]; 

Dann erhalten Sie die Rotationsmatrix mit folgendem Code. Hier temp temporäre Matrix zu speichern Rotation info

SensorManager.getRotationMatrix(temp, null, grav, mag); 

Neuzuordnung die Koordinate von unten Methode

SensorManager.remapCoordinateSystem(temp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, rotation); 
Verwandte Themen