Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Great Circle

Featured Replies

  • Commercial Member

Ok... here's a challenge. *sigh*In a GPS Direct To flight plan there are only 2 waypoints. One can not simply draw a straight line from point a to point b and see the navigation track. It has to be rendered in an arc because it follows a great circle.I've yet to figure out how to accomplish this math-wise. Anyone have ideas/suggestions/info?

Ed Wilson

Mindstar Aviation
My Playland - I69

Hi,I use these ones for bearing and distance. 1 (from gps):(A:PLANE LATITUDE,degrees) (>@c:GeoCalcLatitude1,degrees) (A:PLANE LONGITUDE,degrees) (>@c:GeoCalcLongitude1,degrees) (L:set coordinate lat,number) (>@c:GeoCalcLatitude2,degrees) (L:set coordinate lon,number) (>@c:GeoCalcLongitude2,degrees) (@c:GeoCalcBearing,degrees) (A:MAGVAR,degrees) - (>L:FromToBearing,degrees) (@c:GeoCalcDistance,nmiles) (>L:FromToDistance,nmiles) 2 (without gps var's):(L:set coordinate lat,number) dgrd (>L:Lat2rad,number) (A:PLANE LATITUDE,degrees) dgrd (>L:Lat1rad,number) (L:set coordinate lon,number) (A:PLANE LONGITUDE,degrees) - dgrd (>L:DiffLonrad,number) (L:Lat1rad,number) sin (L:Lat2rad,number) sin * (L:Lat1rad,number) cos (L:Lat2rad,number) cos * (L:DiffLonrad,number) cos * + acos (>L:irs distance,number) (L:Lat2rad,number) sin (L:Lat1rad,number) sin (L:irs distance,number) cos * - (L:Lat1rad,number) cos (L:irs distance,number) sin * / acos rddg (>L:irs heading,number) (L:DiffLonrad,number) sin 0 < if{ 360 (L:irs heading,number) - (>L:irs heading,number) } (L:irs heading,number) (A:MAGVAR,degrees) - near 360 + 360 % d (>L:irs heading,number) The L var names for coordinates, heading and distance are from my panel, any name is ok.Instead of plane position define any other. see:http://forums.avsim.net/dcboard.php?az=sho...ing_type=searchHope it helps,Jan"Beatus ille qui procul negotiis..."

Jan

 

 

 

"Beatus ille qui procul negotiis..."

It mostly depend on the projection type you choose for the display! the Reality XP Sandel use a mercator projection, and I've created a complex function to draw the curve arcs. However, in the Airbus, I use a anzimuthal projection which is less sensible to deformations (and cope well so far in drawing straight lines).Basically, I approximate the curve with a series of well chosen segment lengths. It depends on the range factor and GC dist for the segment.Hope this helps!

  • Commercial Member

>It mostly depend on the projection type you choose for the>display! the Reality XP Sandel use a mercator projection, and>I've created a complex function to draw the curve arcs.>However, in the Airbus, I use a anzimuthal projection which is>less sensible to deformations (and cope well so far in drawing>straight lines).>>Basically, I approximate the curve with a series of well>chosen segment lengths. It depends on the range factor and GC>dist for the segment.>>Hope this helps!So... how are you defining the arc radius?

Ed Wilson

Mindstar Aviation
My Playland - I69

  • Commercial Member

>Hi,>>I use these ones for bearing and distance. >1 (from gps):>(A:PLANE LATITUDE,degrees) (>@c:GeoCalcLatitude1,degrees) >(A:PLANE LONGITUDE,degrees) (>@c:GeoCalcLongitude1,degrees) >(L:set coordinate lat,number) (>@c:GeoCalcLatitude2,degrees) >(L:set coordinate lon,number) (>@c:GeoCalcLongitude2,degrees)>>(@c:GeoCalcBearing,degrees) (A:MAGVAR,degrees) ->(>L:FromToBearing,degrees) >(@c:GeoCalcDistance,nmiles) (>L:FromToDistance,nmiles) >>2 (without gps var's):>(L:set coordinate lat,number) dgrd (>L:Lat2rad,number) >(A:PLANE LATITUDE,degrees) dgrd (>L:Lat1rad,number) >(L:set coordinate lon,number) (A:PLANE LONGITUDE,degrees) ->dgrd (>L:DiffLonrad,number) >(L:Lat1rad,number) sin (L:Lat2rad,number) sin *>(L:Lat1rad,number) cos (L:Lat2rad,number) cos *>(L:DiffLonrad,number) cos * + acos (>L:irs distance,number) >(L:Lat2rad,number) sin (L:Lat1rad,number) sin (L:irs>distance,number) cos * - (L:Lat1rad,number) cos (L:irs>distance,number) sin * / acos rddg (>L:irs heading,number) >(L:DiffLonrad,number) sin 0 < if{ 360 (L:irs heading,number) ->(>L:irs heading,number) } >(L:irs heading,number) (A:MAGVAR,degrees) - near 360 + 360 % d>(>L:irs heading,number) >>The L var names for coordinates, heading and distance are from>my panel, any name is ok.>Instead of plane position define any other. >>see:>http://forums.avsim.net/dcboard.php?az=sho...ing_type=search>>Hope it helps,>>>Jan>>"Beatus ille qui procul negotiis..."Also not what I asked... but thanks. :)

Ed Wilson

Mindstar Aviation
My Playland - I69

Well, I don't define the arc radius per-see, I travel along the GC heading for a given distance, and this gives me a lat/lon point I can draw a segment between. If choosen not too loose but not too close (to save computation/drawing time), you can approximate the arc via a series of segments quite nicely. I've tested this against the GNS 430/Sandel gauge and both were giving quite similar results, for 2 distant points when flying in the middle of the distance of the two.

  • Commercial Member

>Well, I don't define the arc radius per-see, I travel along>the GC heading for a given distance, and this gives me a>lat/lon point I can draw a segment between. If choosen not too>loose but not too close (to save computation/drawing time),>you can approximate the arc via a series of segments quite>nicely. I've tested this against the GNS 430/Sandel gauge and>both were giving quite similar results, for 2 distant points>when flying in the middle of the distance of the two.Ok... was hoping there was a simple method to do this... guess not. ;)

Ed Wilson

Mindstar Aviation
My Playland - I69

  • Author
  • Moderator

>>hi,>>You can found the Great circle math-formula in the aviation>>Formulary V1.43:>>>>http://williams.best.vwh.net/avform.htm>>>>cheers>>Not what I asked, but thanks. ;)Don't be so hasty! You can use this to calculate any intermediate points along the arc based on some fraction of the total distance between the end points:------------------------------------------Intermediate points on a great circleIn previous sections we have found intermediate points on a great circle given either the crossing latitude or longitude. Here we find points (lat,lon) a given fraction of the distance (d) between them. Suppose the starting point is (lat1,lon1) and the final point (lat2,lon2) and we want the point a fraction f along the great circle route. f=0 is point 1. f=1 is point 2. The two points cannot be antipodal ( i.e. lat1+lat2=0 and abs(lon1-lon2)=pi) because then the route is undefined. The intermediate latitude and longitude is then given by: A=sin((1-f)*d)/sin(d) B=sin(f*d)/sin(d) x = A*cos(lat1)*cos(lon1) + B*cos(lat2)*cos(lon2) y = A*cos(lat1)*sin(lon1) + B*cos(lat2)*sin(lon2) z = A*sin(lat1) + B*sin(lat2) lat=atan2(z,sqrt(x^2+y^2)) lon=atan2(y,x)------------------------------------------Take the total distance between the two end points, then divide that by some arbitrary number of points you wish to calculate, then draw your segments accordingly!f=0.0-----departure apt = lat1,lon1f=0.2-----intermediate point at 2/10ths totalf=0.4f=0.6f=0.8f=1.0-----destination apt = lat2,lon2The number of "calculated intermediate points" could be based on the total distance. If < 500nm use 4 points, >500 & < 1000, use 6 points, etc.

Fr. Bill    

AOPA Member: 07141481 AARP Member: 3209010556


     Avsim Board of Directors | Avsim Forums Moderator
  • Author
  • Moderator

>It will take more points than that to show the aircraft>actually on the route.Granted... however if the calculation is written as a func(); you can call it as often as desired in realtime to keep track of your track... :)Let's see, "now I'm here, and there is where I'll wind up, where will I be in - say - another 10nm?"For that matter, how long would it take to calculate and populate an array of - say - 100 points? 1000 points?

Fr. Bill    

AOPA Member: 07141481 AARP Member: 3209010556


     Avsim Board of Directors | Avsim Forums Moderator

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.