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 17651 days, 5 hours, 6 minutes ago.