• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Fehler in Funktion (Gradberechnung zweier Punkte)

BriToGi

Geowizard
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...
 
Oben