Ich würde gerne wissen, wie man den Ausgang des "Rotationsvektorsensors" richtig verwendet. Zur Zeit habe ich folgendes herausgefunden und wollte Gier und Ton von result[]
berechnen, um zu wissen, wo das Gerät hinweist (im Querformat). Aber ich habe Probleme mit den Ergebnissen. Die Gierberechnung ist ziemlich genau, aber die Tonhöhe verhält sich merkwürdig. Vielleicht kann mir jemand in die richtige Richtung zeigen, wie die Daten zu verwenden sind. Eine andere Sache, die ich auch gerne wissen würde ist, ob die Ausrichtung des Geräts (Querformat oder Hochformat) einen Einfluss auf die Ausgabe dieses Sensors hat. Danke im Voraus.Verwendung des Rotationsvektorsensors
private double max = Math.PI/2 - 0.01;
private double min = -max;
private float[] rotationVectorAction(float[] values) {
float[] result = new float[3];
float vec[] = values;
float quat[] = new float[4];
float[] orientation = new float[3];
SensorManager.getQuaternionFromVector(quat, vec);
float[] rotMat = new float[9];
SensorManager.getRotationMatrixFromVector(rotMat, quat);
SensorManager.getOrientation(rotMat, orientation);
result[0] = (float) orientation[0];
result[1] = (float) orientation[1];
result[2] = (float) orientation[2];
return result;
}
private void main() {
float[] result = rotationVectorAction(sensorInput);
yaw = result[0];
pitch = result[1];
pitch = (float) Math.max(min, pitch);
pitch = (float) Math.min(max, pitch);
float dx = (float) (Math.sin(yaw) * (-Math.cos(pitch)));
float dy = (float) Math.sin(pitch);
float dz = (float) (Math.cos(yaw) * Math.cos(pitch));
}
Und in OpenGL ES 2.0 Diese stelle ich meine Kamera bewegen:
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 0, dx, dy, dz, 0, 1, 0);
Könnten Sie Code hinzufügen? Bitte. –