Fehler in Funktion (Gradberechnung zweier Punkte)

Software von und für die Welt.

Moderator: Schrottie

Benutzeravatar
BriToGi
Geowizard
Beiträge: 1681
Registriert: Mo 23. Aug 2010, 15:46

Fehler in Funktion (Gradberechnung zweier Punkte)

Beitragvon BriToGi » Mo 28. Mär 2011, 17:33

Code: Alles auswählen

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: Alles auswählen

       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...
Werbung:

Zurück zu „Linux/Java/PHP“



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder