Dependencies:   mbed

Committer:
pd0wm
Date:
Tue Sep 27 19:46:30 2011 +0000
Revision:
0:bec310bde899

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pd0wm 0:bec310bde899 1 #include "gps_wrapper.h"
pd0wm 0:bec310bde899 2
pd0wm 0:bec310bde899 3 Gps::Gps(GPS * g){
pd0wm 0:bec310bde899 4 gps = g;
pd0wm 0:bec310bde899 5 gps->baud(9600);
pd0wm 0:bec310bde899 6 gps->format(8, GPS::None, 1);
pd0wm 0:bec310bde899 7 gps->setGga(gga);
pd0wm 0:bec310bde899 8
pd0wm 0:bec310bde899 9 }
pd0wm 0:bec310bde899 10
pd0wm 0:bec310bde899 11 void Gps::set(pos* new_pos){
pd0wm 0:bec310bde899 12 positie.lat = new_pos->lat;
pd0wm 0:bec310bde899 13 positie.lon = new_pos->lon;
pd0wm 0:bec310bde899 14 }
pd0wm 0:bec310bde899 15
pd0wm 0:bec310bde899 16 pos Gps::get(void){
pd0wm 0:bec310bde899 17 positie.lat = gps->latitude();
pd0wm 0:bec310bde899 18 positie.lon = gps->longitude();
pd0wm 0:bec310bde899 19 return positie;
pd0wm 0:bec310bde899 20 }
pd0wm 0:bec310bde899 21
pd0wm 0:bec310bde899 22 char* Gps::getgga(void){
pd0wm 0:bec310bde899 23 return gga;
pd0wm 0:bec310bde899 24 }
pd0wm 0:bec310bde899 25 void Gps::simuleer(double koers, double afstand){
pd0wm 0:bec310bde899 26
pd0wm 0:bec310bde899 27 koers *= deg2rad;
pd0wm 0:bec310bde899 28 afstand /= 6371.0;
pd0wm 0:bec310bde899 29
pd0wm 0:bec310bde899 30 double lat1 = positie.lat * deg2rad;
pd0wm 0:bec310bde899 31 double lon1 = positie.lon * deg2rad;
pd0wm 0:bec310bde899 32
pd0wm 0:bec310bde899 33 double dlat = afstand * cos(koers);
pd0wm 0:bec310bde899 34 double lat2 = dlat + lat1;
pd0wm 0:bec310bde899 35
pd0wm 0:bec310bde899 36 double df = log(tan(lat2/2.0 + PI/4.0)/tan(lat1/2.0 + PI/4.0));
pd0wm 0:bec310bde899 37 double q;
pd0wm 0:bec310bde899 38 if (df == 0)
pd0wm 0:bec310bde899 39 q = cos(lat1);
pd0wm 0:bec310bde899 40 else
pd0wm 0:bec310bde899 41 q = dlat / df;
pd0wm 0:bec310bde899 42
pd0wm 0:bec310bde899 43 double dlon = afstand * sin(koers) / q;
pd0wm 0:bec310bde899 44
pd0wm 0:bec310bde899 45 double lon2 = fmod((lon1 + dlon + PI),(2.0 * PI)) - PI;
pd0wm 0:bec310bde899 46
pd0wm 0:bec310bde899 47 positie.lat = lat2 * rad2deg;
pd0wm 0:bec310bde899 48 positie.lon = lon2 * rad2deg;
pd0wm 0:bec310bde899 49 }