program latlon C************************************************************************* C Compute the distance in miles and kilometers between 0-0 and all other C unit degrees on the earth C C Use arclength = arccos(cos(a1) * cos(b1) * cos(a2) * cos(b2) + C cos(a1) * sin(b1) * cos(a2) * sin(b2) + C sin(a1) * sin(a2)) * r C where r is radius of earth, a1 is lat of origin, a2 is lon of origin C b1 is lat of endpoint, and b2 is lon of endpoint C************************************************************************* real latdec, londec, latrad, lonrad, distmile, distkm real latsource, lonsource, deg2rad, arclength real lat0rad, lon0rad parameter(radiuskm=6378.0, radiusmile=3963.1) latdec = 42.0 londec = 15.0 latsource = 0.0 ! SAME AS RADIANS lonsource = 0.0 ! SAME AS RADIANS lat0rad = deg2rad(latsource) lon0rad = deg2rad(lonsource) do 100 latdec = -90.0, 90.0, 1.0 do 110 londec = 0.0, 360.0, 1.0 latrad = deg2rad(latdec) lonrad = deg2rad(londec) distkm = arclength(lat0rad, lon0rad, latrad, + lonrad, radiuskm) distmile = arclength(lat0rad, lon0rad, latrad, + lonrad, radiusmile) print *, latdec, londec,distkm, distmile 110 end do 100 end do stop end C--------------------------------------------------------------------------- function deg2rad(degree) real degree, deg2rad, pi parameter(pi=3.14159) deg2rad = degree * 2.0 * pi / 360.0 return end C-------------------------------------------------------------------------- function arclength(a1, b1, a2, b2, r) real a1, a2, b1, b2, r arclength = acos(cos(a1) * cos(b1) * cos(a2) * cos(b2) + + cos(a1) * sin(b1) * cos(a2) * sin(b2) + + sin(a1) * sin(a2)) * r return end