Wenn Sie CMDevicemotion verwenden, wenn das Gerät gerade ist (Pitch= 90), ist es wirklich instabil.Sowieso, um das zu lösen?

StackOverflow https://stackoverflow.com//questions/10665306

  •  11-12-2019
  •  | 
  •  

Frage

Ich weiß, dass das (Pech-, Gier-, Rollen-) Koordinatensystem seinen eigenen fehlerhaften mathematischen Wise hat. Ich hoffe jedoch wirklich etwas, das stattdessen etwas von diesen Koordinaten abgeleitet ist, eine Alternative sein können.

Was ich versuche, das Gerät zu bewegen (sagen wir sagen, es ist ein iPhone) in der realen Welt und versucht, das Gier und die Tonhöhe über das Auge des Benutzers herauszufinden. Somit sollte der Gierbereich (-180, 180) und der Abstandsbereich sein (-90, 90). Während ich das iPhone (immer zustande mir) von der Unterseite nach vorne bewegt, gibt mir die CMDEVICEMOTION von 0 bis 90, und während ich das iPhone (immer noch mit mir gegenüberliegt) von vorne nach oben bis 0. Dies ist gut und ich bin vollkommen über Pitch-Daten.

Wenn jedoch nahe der Tonhöhe nahe 90 ist, ist Gier sehr wackelig und instabil. Dies ist nicht das Problem, weil ich die Änderung des Gieres, wenn die Tonhöhe um 90 ignorieren kann. Das eigentliche Problem ist jedoch, dass der Wert des Giers dauert sich dramatisch ändert, bevor der Tonhöhe zunimmt und nach dem Abnehmen abnimmt. Ich meine, es ist nicht nur wackelig, sondern die mittleren Veränderungen! ändert etwas wie 180 (PI). Ich denke, das ist, weil die Koordinate völlig ändert. Aber ich bin an der Koordinate verloren, die jetzt überträgt.

War es hilfreich?

Lösung

Diese unordentliche Problemumgehung, die Sie gerade beschrieben haben, ist genau der Grund, warum Sie Rolle, Pitch und Gier nicht verwenden sollten.

Sie gehen entweder auf diese Straße weiter und machen den Durcheinander größer oder Rotationsmatrizen oder Quaternionen verwenden.

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