Jump to content

Sign in to follow this  
n4gix

Great Circle

Recommended Posts

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?

Share this post


Link to post
Share on other sites

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..."

Share this post


Link to post
Share on other sites
Guest JeanLuc_

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!

Share this post


Link to post
Share on other sites

>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?

Share this post


Link to post
Share on other sites

>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. :)

Share this post


Link to post
Share on other sites
Guest JeanLuc_

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.

Share this post


Link to post
Share on other sites

>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. ;)

Share this post


Link to post
Share on other sites

>>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.

Share this post


Link to post
Share on other sites

It will take more points than that to show the aircraft actually on the route.

Share this post


Link to post
Share on other sites

>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?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...