Geocaching & GPS location based games

Thema anzeigen - Fehler in Funktion (Gradberechnung zweier Punkte)


Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 


Autor Nachricht
BeitragVerfasst: Mo 28. Mär 2011, 16:33 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 23. Aug 2010, 14:46
Beiträge: 1632
Code:
function Heading($lat2, $long2)
      {
               // Takes lat/longs as expressions in Degrees
               $pi = 3.14159265358979;
               $rLat1 = 0.0;
               $rLong1 = 0.0;
               $rLat2 = 0.0;
               $rLong2 = 0.0;
               $d = 0.0;
               $h = 0.0;
               $result = 0.0;
 
       $home_lat = $_SESSION['home_lat']; //52.480938;
      $home_lon = $_SESSION['home_lon']; //13.317232;
   
               $rLat1 = deg2rad($home_lat);
               $rLong1 = deg2rad($home_lon);

 
               $rLat2 = deg2rad($lat2);
               $rLong2 = deg2rad($long2);
 
 
               // Distance in Meters Using Radians
               // Less subject to rounding errors for small distances
               $d = ( 2 * asin(sqrt(pow(sin(($rLat1 - $rLat2) / 2), 2) + cos($rLat1) * cos($rLat2) * pow(sin(($rLong1 - $rLong2) / 2),2))));
 
               if (sin(ABS($rLong2) - ABS($rLong1)) < 0)
                     {
         $h = acos(((sin($rLat2) - sin($rLat1)) * cos($d)) / (sin($d) * cos($rLat1)));
                     }
               else
                     {
                     $h = 2 * $pi - acos(((sin($rLat2) - sin($rLat1)) * cos($d)) / (sin($d) * cos($rLat1)));
                     }
 
                  $result = rad2deg($h);
       $result = round($result+0.5); // auf ganze zahl runden
       $result = 360 - $result;
       if(is_nan($result))
          $result = 180;
                  return($result);
               }


Hi, irgendwo bei 180° ist ein Fehler, ich tippe auf einen devision by zero, wenn 180 reuakommen sollte, ist $result NAN, die beiden Zeilen unten:
Code:
       if(is_nan($result))
          $result = 180;


korrigieren das zwar, aber schön ist es nicht. Hat jemand eine Idee?

Sorry dass es den Code in der Ansicht so zerhaut...

_________________
Bild


Nach oben
   
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 


Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Impressum