Dokumentation für das Modul Great circle distance[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Funktionen für die Nutzung in Modulen:

function gcd.earthRadius( lat ) 
  • Ermittelt den Erdradius in Abhängigkeit vom Breitengrad in Kilometern.
function gcd.getGcd( lat1, long1, lat2, long2, radius ) 
  • Bestimmt die Entfernung zweier Punkte in Kilometern auf einem Himmelskörper mit dem Radius radius. Wenn radius fehlt wird der breitengradabhängige Erdradius gewählt.

Funktionen für die Vorlage {{Great circle distance}}:

function gcd.gcd( frame ) 

Weitere Beschreibung unter {{Great circle distance}}.

Verwendung in anderen Modulen

Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:

Hinweise
-- Modul:Great circle distance -- Getting Great Circle Distance  local gcd = {}  local function round( n, idp ) 	local m = 10^( idp or 0 ) 	if n >= 0 then 		return math.floor( n * m + 0.5 ) / m 	else 		return math.ceil( n * m - 0.5 ) / m 	end end  -- Getting latitude-dependent earth radius -- lat ranges from -90 to 90, decimal degree function gcd.earthRadius( lat ) 	local equatorR = 6378.137 	local poleR = 6356.752 	if not lat then 		lat = 35.4 	end 	lat = lat * math.pi / 180 	return math.sqrt( ( ( equatorR * equatorR * math.cos( lat ) )^2 + ( poleR * poleR * math.sin( lat ) )^2 ) / 		( ( equatorR * math.cos( lat ) )^2 + ( poleR * math.sin( lat ) )^2 ) ) end  -- Getting great circle distance by kilometers or unit of radius -- Haversine formula -- See: https://en.wikipedia.org/wiki/Haversine_formula function gcd.getGcd( lat1, long1, lat2, long2, radius ) 	if not radius then 		radius = ( gcd.earthRadius( lat1 ) + gcd.earthRadius( lat2 ) ) / 2 	end 	local factor = math.pi / 180 	lat1 = lat1 * factor 	long1 = long1 * factor 	lat2 = lat2 * factor 	long2 = long2 * factor 	return 2 * radius * math.asin ( math.sqrt ( 		math.pow( math.sin( ( lat2 - lat1 ) / 2 ), 2 ) 		+ math.cos( lat1 ) * math.cos( lat2 ) * math.pow( math.sin( ( long2 - long1 ) / 2 ), 2 ) 		) ) end  -- Template call function gcd.gcd( frame ) 	local args = frame:getParent().args 	args.lat1  = tonumber( args.lat1 or args[ 1 ] or '0' ) or 0 	args.long1 = tonumber( args.long1 or args[ 2 ] or '0' ) or 0 	args.lat2  = tonumber( args.lat2 or args[ 3 ] or '0' ) or 0 	args.long2 = tonumber( args.long2 or args[ 4 ] or '0' ) or 0 	args.precision = tonumber( args.precision or args[ 5 ] or '0' ) or 0 	args.precision = round( args.precision, 0 )  	return round( gcd.getGcd( args.lat1, args.long1, args.lat2, args.long2, args.radius ), 		args.precision ) end  return gcd