Die Beschleunigung ist ein dreidimensionaler Vektor. Dein Sensor liefert dir, da er in Wirklichkeit aus 3 orthogonal angeordneten Sensoren besteht, die 3 Komponenten des Beschleunigungsvektors in kartesischen Koordinaten.
Die Größe der (Erd)Beschleunigung ist der Betrag des Beschleunigungsvektors. Und der Betrag ist die Wurzel aus dem Skalarprodukt des Vektors mit sich selber. Bei rechtwinkligen Koordinaten also a = sqrt(ax^2 + ay^2 + az^2). Sind die Sensoren nicht rechtwinklig, braucht man den Kosinussatz.
Dieser Betrag ist die Beschleunigung. Das gilt für alle Winkel. Wenn man nur die Beschleunigung wissen will, braucht man den Winkel nicht extra auszurechnen.
Zwei Spezialfälle zu Prüfung: die Z-Achse steht senkrecht, ax = ay = 0, az ist die Beschleunigung, a = sqrt(0^2 + 0^2 + az^2) = az
Der Sensor liegt auf der Seite, die Y-Achse steht senkrecht, ax = az = 0, ay ist die Beschleunigung, a = sqrt(0^2 + ay^2 + 0^2) = ay
Wenn man den Winkel nicht wissen will, braucht man ihn auch nicht extra auszurechnen. Da sqrt() gern länglich wird, versucht man die Funktion zu vermeiden. Ist der Winkel (eigentlich zwei Winkel) bekannt, kann man den Betrag des Vektors auch anders rechnen. Muß man die Winkel erst berechnen, läufts auf das gleiche hinaus.
MfG Klebwax
Lesezeichen