Einzelnen Beitrag anzeigen

Ralphi

Registriert seit: 11. Okt 2005
Ort: Neuss
19 Beiträge
 
Delphi 10 Seattle Professional
 
#11

AW: Kompass mit Android

  Alt 15. Dez 2013, 11:36
Danke für die vielen Hinweise.

Besonderen Dank an Peter666, das war die Lösung!

Der Wertebereich von 0-360 stimmte schon mit der Funktion, die Richtung war nur um 90 Grad verschoben.
Eventuell waren die Konstanten für andere Magnetfeld-Sensoren.
Ich habe nur die Konstanten um 90 geändert und die Himmelsrichtung war ok.
Die Deklination kann man falls gewünscht glaube ich mit den Tilt-Werten des Sensors berechnen und berücksichtigen.
Das werde ich mal probieren und das Ergebnis hier posten.

Hier die entsprechend geänderte Funktion von Peter666, die ursptünglichen Zeilen habe ich belassen und auskommentiert:
Code:
function Heading: single;
  begin
    if (OrientationSensor1.Sensor.HeadingY > 0) then
      //result := 90.0 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
      result := arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
    else if (OrientationSensor1.Sensor.HeadingY < 0) then
      //result := 270 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
      result := 180 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
    else if (OrientationSensor1.Sensor.HeadingY = 0) and (OrientationSensor1.Sensor.HeadingX < 0) then
      result := 180
    else if (OrientationSensor1.Sensor.HeadingY = 0) and (OrientationSensor1.Sensor.HeadingX > 0) then
      result := 0;
  end;

Geändert von Ralphi (15. Dez 2013 um 11:49 Uhr)
  Mit Zitat antworten Zitat