This is a rough routine to calc distance on Km from a waypoint given thatCode:'****************** Use Pythagoras' Theorem To Calculate Distance From Waypoint ******************************** ' 'assumes you have lat & longitudinal difference in degrees and minutes loaded into arrays ' 'Example Lat & Longitude arrays 'L0,L1 degrees L2,L3 decimal point L4,L5,L6,L7 'L8,L9,LA degrees LB,LC decimal point LD,LE,LF,LG ' ' Way_Distance: ' IF L7 > 4 THEN L6 = L6 + 1 'round off last two decimal places IF L6 > 4 THEN L5 = L5 + 1 'of latitude difference ' degB = L2 * 1000 ' degB = degB + (L3 * 100) ' degB = degB + (L4 * 10) ' degB = degB + L5 ' ' L0 = L0 * 10 ' L0 = L0 + L1 ' ' IF LG > 4 THEN LF = LF + 1 'round off last two decimal places IF LF > 4 THEN LE = LE + 1 'of longitude difference ' degC = LB * 1000 ' degC = degC + (LC * 100) ' degC = degC + (LD * 10) ' degC = degC + LE ' ' degree = L8 * 100 ' degree = degree + (L9 * 10) ' degree = degree + LA ' ' gosub degB_mod ' degA = L0 * 110 '1 degree = 110 Km @ 27 degrees latitude degA = degA + (degB / 100) 'add 100% degA = degA + remainder ' degB = degB / 100 'calculate 83% degB = degB * 83 ' gosub degB_mod ' degA = degA + (degB / 100) 'add to make 183% degA = degA + remainder ' ' gosub degC_mod ' degree = degree * 98 '1 degree = 98 Km @ 152 degrees longitude degree = degree + (degC / 100) 'add 100% degree = degree + remainder ' degC = degC / 100 'calculate 63% degC = degC * 63 ' gosub degC_mod ' degree = degree + (degC / 100) 'add to make 163% degree = degree + remainder ' ' degree = degree * degree 'Pythagoras' theorem: C² = A² + B² /| degA = degA * degA ' / | degree = degree + degA ' C/ | degree = SQR degree ' /_A_|B ' L0 = degree Dig 4 'prepare coordinate variables as display buffer L1 = degree dig 3 ' L2 = degree dig 2 ' L3 = degree dig 1 ' L4 = degree dig 0 ' L0 = L0 + 48 'convert back to ASCII for LCD display L1 = L1 + 48 ' L2 = L2 + 48 ' L3 = L3 + 48 ' L4 = L4 + 48 ' goto printKM ' ' degB_mod: ' remainder = degB // 100 'calculate remainder of the next divide goto Calc_mod ' degC_mod: ' remainder = degC // 100 'calculate remainder of the next divide Calc_mod: ' IF remainder > 49 THEN 'round off remainder to the nearest unit remainder = 1 ' goto done_modulus ' ENDIF ' remainder = 0 ' done_modulus: ' return '
the latitude & longitudinal difference in degrees has already been aquired by
subtracting waypoint coordinates from present location or vice versa.
It relies on the fiction that the distance in Km of 1 degree is constant
so it will become less accurate as the device moves further away from my
own geographic coordinates because one degree longitudes becomes
serverely shorter as you move toward one of the poles.
printKm: would be a routine that writes L0 - L4 values on an LCD display
and then the word Kilometers.
Where to go with it next??




Bookmarks