BallBearing.frink

View or download BallBearing.frink in plain text format


// Triangulation for "Ball Bearing" geocache
// http://www.geocaching.com/seek/cache_details.aspx?guid=da74fd7a-9cb3-40bd-aa89-31ef133db610

// Import definitions of distance/bearing functions
use navigation.frink

// P7 (surveyed by me)
latP7 = DMS[39, 58.259] North
longP7 = DMS[105, 15.044] West

// Bearing from P7 to target
//b7 = new interval[333.5, 334, 334.5] degrees
b7 = 334 degrees

// P8 (given)
latP8 = DMS[40, 00.890] North
longP8 = DMS[105, 13.921] West

// Bearing from P8 to target (P9)
//b8 = new interval[285.5, 286, 286.5] degrees
b8 = 286 degrees

// Distance from P7 to P8
[d78, theta] = earthDistanceAndBearing[latP7, longP7, latP8, longP8]
println["Distance from P7 to P8 is " + format[d78, "miles", 4]]
println["theta: " + (theta->degrees)]

// Interior angle of triangle at P8
theta8 = b8-theta

println["theta8: " + (theta8->degrees)]

// Interior angle of triangle at target (P9)
thetaT = b8-b7

// Distance from P7 to target (P9)
distP7T = (d78 sin[theta8])/sin[thetaT]

// Interior angle of triangle at P7
theta7 = (360 degrees) - b7 - (180 degrees - theta)
println["theta7: " + (theta7->degrees)]

println["Distance from P7 to P9 is " + format[distP7T, "miles", 4]]

// Distance from P8 to target
distP8T = (d78 sin[theta7])/sin[thetaT]

println["Distance from P8 to P9 is " + format[distP8T, "miles", 4]]

// Find resultant lat/long
[lat7T, long7T] = resultantLatLong[latP7, longP7, distP7T, b7]

println["\nFrom point 7,"]
println["Latitude of target : " + DM[lat7T]]
println["Longitude of target: " + DM[long7T]]

// Find resultant lat/long
[lat8T, long8T] = resultantLatLong[latP8, longP8, distP8T, b8]

println["\nFrom point 8,"]
println["Latitude of target : " + DM[lat8T]]
println["Longitude of target: " + DM[long8T]]

// Average points
lat9A = (lat7T + lat8T) / 2
long9A = (long7T + long8T) / 2

println["\nP9 average:"]
println["Latitude of target : " + DM[lat9A]]
println["Longitude of target: " + DM[long9A]]


[lat10A, long10A] = resultantLatLong[lat9A, long9A, .103 km, 72 degrees]

println["\nP10 prediction:"]
println["Latitude of target : " + DM[lat10A]]
println["Longitude of target: " + DM[long10A]]


View or download BallBearing.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 17592 days, 15 hours, 22 minutes ago.