15,883,531 members
See more:
I have a code set that calculates flightlines, starting with a lat/lon, initial direction, turn direction, track length,track width And line count.

All variables are defined as decimal

Using 135 degrees and 315 degrees, 100 mile track, I get 2 different results. The southeast course points are 100.5671 miles apart, and the Northwest points are 99.23002 miles apart. This skews my flight lines start and ends, but the lines are parallel

In testing with 90/270 headings, with longer lines, the lat/lon pairs seem to cause a 1.1 degree variance in headings, but calculate to the same path lengths and longitudes, but differing longitudes so the flight lines are not parallel

Here are the formulas

And

Sub GetNextLineStart(Lat1, Lon1, Dist, Course)
Call GetNewlat(Lat1, Lon1, Dist, Course)
Call GetNewlon(Lat1, Lon1, Dist, Course)

End Sub

And the real meat

Sub GetNewlat(Lat1, Lon1, Dist, Bearing)
Dim R As Decimal = 6378.1
EndLatRadians = Math.Asin(Math.Sin(Lat1) * Math.Cos(Dist / R) + Math.Cos(Lat1) * Math.Sin(Dist / R) * Math.Cos(Bearing))
End Sub
Sub GetNewlon(Lat1, Lon1, Dist, Bearing)
Dim R As Decimal = 6378.1
EndLonRadians = Lon1 + Math.Atan2(Math.Sin(Bearing) * Math.Sin(Dist / R) * Math.Cos(Lat1), Math.Cos(Dist / R) - Math.Sin(Lat1) * Math.Sin(Lat1))
End Sub

What I have tried:

I changed the variables to decimal- no change,
Posted
Updated 19-Oct-17 12:23pm

## Solution 1

You appear to be using a spherical model, which is OK for low accuracy calculations.
I suspect the fundamental reason you get funny results is that you are calculating the implicit longitude scaling factor (cosine of latitude) at one end of your line.
There are all sorts of other counter-intuitive things about lat/lon calculations. For example, in general the bearing from A to B is in general, NOT 180 degrees different to the bearing from B to A.
And things get even more complicated when you use a more realistic ellipsoidal model (like GPS uses). If you want to see how it really words, start somewhere like ICSM - GDA Technical Manuals[^]

v2