Haversine formula: Difference between revisions

Content added Content deleted
(Updated to work with Nim 1.6. Using the function “degToRad” from standard library module “math”.)
m (Grouping BASIC dialects)
Line 456: Line 456:


=={{header|BASIC}}==
=={{header|BASIC}}==
==={{header|BASIC256}}===
<syntaxhighlight lang="basic256">
global radioTierra # radio de la tierra en km
radioTierra = 6372.8

function Haversine(lat1, long1, lat2, long2 , radio)
d_long = radians(long1 - long2)
theta1 = radians(lat1)
theta2 = radians(lat2)
dx = cos(d_long) * cos(theta1) - cos(theta2)
dy = sin(d_long) * cos(theta1)
dz = sin(theta1) - sin(theta2)
return asin(sqr(dx*dx + dy*dy + dz*dz) / 2) * radio * 2
end function

print
print " Distancia de Haversine entre BNA y LAX = ";
print Haversine(36.12, -86.67, 33.94, -118.4, radioTierra); " km"
end
</syntaxhighlight>
{{out}}
<pre> Distancia de Haversine entre BNA y LAX = 2887.25994877 km.</pre>

==={{header|QBasic}}===
{{works with|QBasic|1.1}}
{{works with|QuickBasic|4.5}}
<syntaxhighlight lang="basic">
<syntaxhighlight lang="basic">
CONST pi = 3.141593 ' define pi
CONST pi = 3.141593 ' define pi
Line 475: Line 501:
Haversine! = (SQR(dx! * dx! + dy! * dy! + dz! * dz!) / 2) * radio * 2
Haversine! = (SQR(dx! * dx! + dy! * dy! + dz! * dz!) / 2) * radio * 2
END FUNCTION
END FUNCTION</syntaxhighlight>
</syntaxhighlight>
{{out}}
{{out}}
<pre> Distancia de Haversine: 2862.63 km</pre>
<pre>
Distancia de Haversine: 2862.63 km
</pre>


==={{header|True BASIC}}===
<syntaxhighlight lang="basic">DEF Haversine (lat1, long1, lat2, long2)
OPTION ANGLE RADIANS
LET R = 6372.8 !radio terrestre en km.
LET dLat = RAD(lat2-lat1)
LET dLong = RAD(long2-long1)
LET lat1 = RAD(lat1)
LET lat2 = RAD(lat2)
LET Haversine = R *2 * ASIN(SQR(SIN(dLat/2)^2 + SIN(dLong/2)^2 *COS(lat1) * COS(lat2)))
END DEF
PRINT


PRINT "Distancia de Haversine:"; Haversine(36.12, -86.67, 33.94, -118.4); "km"
=={{header|BASIC256}}==
<syntaxhighlight lang="basic256">
END</syntaxhighlight>
{{out}}
global radioTierra # radio de la tierra en km
<pre>Distancia de Haversine: 2887.26 km</pre>
radioTierra = 6372.8


==={{header|Yabasic}}===
function Haversine(lat1, long1, lat2, long2 , radio)
{{trans|FreeBASIC}}
d_long = radians(long1 - long2)
<syntaxhighlight lang="yabasic">//pi está predefinido en Yabasic
theta1 = radians(lat1)
deg2rad = pi / 180 // define grados a radianes 0.01745..
theta2 = radians(lat2)
radioTierra = 6372.8 // radio de la tierra en km
dx = cos(d_long) * cos(theta1) - cos(theta2)
dy = sin(d_long) * cos(theta1)
dz = sin(theta1) - sin(theta2)
return asin(sqr(dx*dx + dy*dy + dz*dz) / 2) * radio * 2
end function


sub Haversine(lat1, long1, lat2, long2 , radio)
print
d_long = deg2rad * (long1 - long2)
print " Distancia de Haversine entre BNA y LAX = ";
theta1 = deg2rad * lat1
print Haversine(36.12, -86.67, 33.94, -118.4, radioTierra); " km"
theta2 = deg2rad * lat2
end
dx = cos(d_long) * cos(theta1) - cos(theta2)
</syntaxhighlight>
dy = sin(d_long) * cos(theta1)
{{out}}
dz = sin(theta1) - sin(theta2)
<pre>
return asin(sqr(dx*dx + dy*dy + dz*dz) / 2) * radio * 2
Distancia de Haversine entre BNA y LAX = 2887.25994877 km.
end sub
</pre>


print " Distancia de Haversine entre BNA y LAX = ", Haversine(36.12, -86.67, 33.94, -118.4, radioTierra), " km"
end</syntaxhighlight>
{{out}}
<pre> Distancia de Haversine entre BNA y LAX = 259.478 km</pre>


=={{header|BBC BASIC}}==
=={{header|BBC BASIC}}==
Line 3,670: Line 3,704:
2887.2594934
2887.2594934
</pre>
</pre>


=={{header|True BASIC}}==
<syntaxhighlight lang="basic">
DEF Haversine (lat1, long1, lat2, long2)
OPTION ANGLE RADIANS
LET R = 6372.8 !radio terrestre en km.
LET dLat = RAD(lat2-lat1)
LET dLong = RAD(long2-long1)
LET lat1 = RAD(lat1)
LET lat2 = RAD(lat2)
LET Haversine = R *2 * ASIN(SQR(SIN(dLat/2)^2 + SIN(dLong/2)^2 *COS(lat1) * COS(lat2)))
END DEF
PRINT

PRINT "Distancia de Haversine:"; Haversine(36.12, -86.67, 33.94, -118.4); "km"
END
</syntaxhighlight>
{{out}}
<pre>
Distancia de Haversine: 2887.26 km
</pre>



=={{header|TypeScript}}==
=={{header|TypeScript}}==
Line 4,018: Line 4,029:
2886.444
2886.444
</pre>
</pre>


=={{header|Yabasic}}==
{{trans|FreeBASIC}}
<syntaxhighlight lang="yabasic">
//pi está predefinido en Yabasic
deg2rad = pi / 180 // define grados a radianes 0.01745..
radioTierra = 6372.8 // radio de la tierra en km

sub Haversine(lat1, long1, lat2, long2 , radio)
d_long = deg2rad * (long1 - long2)
theta1 = deg2rad * lat1
theta2 = deg2rad * lat2
dx = cos(d_long) * cos(theta1) - cos(theta2)
dy = sin(d_long) * cos(theta1)
dz = sin(theta1) - sin(theta2)
return asin(sqr(dx*dx + dy*dy + dz*dz) / 2) * radio * 2
end sub

print " Distancia de Haversine entre BNA y LAX = ", Haversine(36.12, -86.67, 33.94, -118.4, radioTierra), " km"
end
</syntaxhighlight>
{{out}}
<pre>
Distancia de Haversine entre BNA y LAX = 259.478 km
</pre>



=={{header|zkl}}==
=={{header|zkl}}==