[Gcblue-commits] gcb_wx/src/common nsNav.cpp,1.9,1.10 simmath.cpp,1.30,1.31
Status: Alpha
Brought to you by:
ddcforge
|
From: Dewitt C. <ddc...@us...> - 2006-05-04 22:47:29
|
Update of /cvsroot/gcblue/gcb_wx/src/common In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15842a/src/common Modified Files: nsNav.cpp simmath.cpp Log Message: Index: nsNav.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/common/nsNav.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** nsNav.cpp 23 Mar 2006 01:11:01 -0000 1.9 --- nsNav.cpp 4 May 2006 22:47:26 -0000 1.10 *************** *** 188,191 **** --- 188,192 ---- b.mfLon_rad = a.mfLon_rad + sinf(afHeading_rad)*afRange_rad/cosf(a.mfLat_rad); } + /** * Calculates offset point from (afLatA_rad,afLonA_rad). *************** *** 203,206 **** --- 204,224 ---- afLonB_rad = afLonA_rad + sinf(afHeading_rad)*afRange_rad/cosf(afLatA_rad); } + + /** + * Calculates offset point from (afLatA_rad,afLonA_rad). + * @param afLatA_rad starting latitude in radians. + * @param afLonA_rad starting longitude in radians. + * @param afLatB_rad offset latitude in radians. + * @param afLonB_rad offset longitude in radians. + * @param afHeading_rad offset heading in radians. + * @param afRange_rad offset range in radians at equator. + */ + void nsNav::OffsetApprox(double afLatA_rad, double afLonA_rad, + double& afLatB_rad, double& afLonB_rad, float afHeading_rad, double afRange_rad) + { + afLatB_rad = afLatA_rad + cosf(afHeading_rad)*afRange_rad; + afLonB_rad = afLonA_rad + sinf(afHeading_rad)*afRange_rad/cosf(afLatA_rad); + } + /** * @return latitude of point at afLon_rad along GC path between a and b Index: simmath.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/common/simmath.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** simmath.cpp 23 Mar 2006 01:11:01 -0000 1.30 --- simmath.cpp 4 May 2006 22:47:26 -0000 1.31 *************** *** 850,858 **** } ! // set rpGeoPoint to point at afBearing_deg and afRange_km relative to ! // current location of this tcKinematics object ! // altitude isn't changed, has issues off of equator like everything else :< void tcKinematics::SetRelativeGeo(GeoPoint& rpGeoPoint, float afBearing_rad, float afRange_km) { ! nsNav::OffsetApprox((float)mfLat_rad,(float)mfLon_rad, rpGeoPoint.mfLat_rad, rpGeoPoint.mfLon_rad, afBearing_rad,afRange_km*C_KMTORAD); } --- 850,860 ---- } ! /** ! * Set rpGeoPoint to point at afBearing_deg and afRange_km relative to ! * current location of this tcKinematics object ! * altitude isn't changed, has issues off of equator like everything else :< ! */ void tcKinematics::SetRelativeGeo(GeoPoint& rpGeoPoint, float afBearing_rad, float afRange_km) { ! nsNav::OffsetApprox(mfLat_rad, mfLon_rad, rpGeoPoint.mfLat_rad, rpGeoPoint.mfLon_rad, afBearing_rad,afRange_km*C_KMTORAD); } |