Sneaky1.frink

View or download Sneaky1.frink in plain text format


// Solver for the "Sneaky #1" Geocache (GCC46E)
// http://www.geocaching.com/seek/cache_details.aspx?guid=17684393-408c-49ac-b439-4e0d6c8fefea

// This uses the Public Land Survey System (PLSS) to describe the coordinates.
//
// SE 1/4 of NW 1/4, S27, T6S, R66W, 6PM.
// The cache is located 0.0805 minutes north and 0.1495 minutes east of the
// south west corner .

use navigation.frink
use Datum.frink

ColoradoBaseline =  DMS[40,0,7]
SixthPrincipal   = -DMS[97,22,08]

[lat,long] = swTownshipCorner[SixthPrincipal, ColoradoBaseline, -6, -66]
println[[lat,long] -> DMS]

[d,b] = earthDistanceAndBearing[ColoradoBaseline, SixthPrincipal, lat, long]
println["Distance is " + (d->"surveymiles")]


// Find the latitude of the south edge of the township.
// Returns:
//  [lat, long]
swTownshipCorner[meridian,baseline,unitsNorth,unitsEast, d is Datum = Datum.WGS84] :=
{
   if (unitsNorth > 0)
      unitsNorth = unitsNorth-1
   
   [lat,long] = resultantLatLong[baseline, meridian, 6 surveymiles * unitsNorth, 0 degrees]

   // This gives the circumference of a circle at a given latitude.
   // (Meeus, p. 83)
   circumferenceLat = d.a cos[lat]/sqrt[1 - d.e^2 sin[lat]^2]

   if (unitsEast > 0)
      unitsEast = unitsEast-1
   
   long = meridian + (6 surveymiles * unitsEast) / circumferenceLat

   return [lat,long]
}


View or download Sneaky1.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17778 days, 20 hours, 29 minutes ago.