![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Diff: invoer/gps_wrapper.cpp
- Revision:
- 0:bec310bde899
diff -r 000000000000 -r bec310bde899 invoer/gps_wrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/invoer/gps_wrapper.cpp Tue Sep 27 19:46:30 2011 +0000 @@ -0,0 +1,49 @@ +#include "gps_wrapper.h" + +Gps::Gps(GPS * g){ + gps = g; + gps->baud(9600); + gps->format(8, GPS::None, 1); + gps->setGga(gga); + +} + +void Gps::set(pos* new_pos){ + positie.lat = new_pos->lat; + positie.lon = new_pos->lon; +} + +pos Gps::get(void){ + positie.lat = gps->latitude(); + positie.lon = gps->longitude(); + return positie; +} + +char* Gps::getgga(void){ + return gga; +} +void Gps::simuleer(double koers, double afstand){ + + koers *= deg2rad; + afstand /= 6371.0; + + double lat1 = positie.lat * deg2rad; + double lon1 = positie.lon * deg2rad; + + double dlat = afstand * cos(koers); + double lat2 = dlat + lat1; + + double df = log(tan(lat2/2.0 + PI/4.0)/tan(lat1/2.0 + PI/4.0)); + double q; + if (df == 0) + q = cos(lat1); + else + q = dlat / df; + + double dlon = afstand * sin(koers) / q; + + double lon2 = fmod((lon1 + dlon + PI),(2.0 * PI)) - PI; + + positie.lat = lat2 * rad2deg; + positie.lon = lon2 * rad2deg; +}