Snorktracker
 All Data Structures Files Functions Variables Macros Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Friends
MyLocation Class Reference

#include <Gps.h>

Public Member Functions

void clear ()
 
double latitude ()
 
double longitude ()
 
String longitudeString ()
 
String latitudeString ()
 
double distanceTo (MyLocation &location)
 
double courseTo (MyLocation &location)
 

Static Public Member Functions

static double distanceBetween (double lat1, double long1, double lat2, double long2)
 
static double courseTo (double lat1, double long1, double lat2, double long2)
 

Protected Attributes

MyDegrees latitude_
 Latitude.
 
MyDegrees longitude_
 Longitude.
 

Friends

class MyGps
 

Detailed Description

Class to store the two gps positions

Definition at line 46 of file Gps.h.

Member Function Documentation

void MyLocation::clear ( )

Reset the values.

Definition at line 241 of file Gps.h.

References MyDegrees::clear(), latitude_, and longitude_.

Referenced by MyGps::clear().

242 {
243  latitude_.clear();
244  longitude_.clear();
245 }
MyDegrees latitude_
Latitude.
Definition: Gps.h:50
MyDegrees longitude_
Longitude.
Definition: Gps.h:51
void clear()
Definition: Gps.h:201
double MyLocation::courseTo ( double  lat1,
double  long1,
double  lat2,
double  long2 
)
static

Calculate the course between two gps positions

Definition at line 274 of file Gps.h.

Referenced by courseTo().

275 {
276  // returns course in degrees (North=0, West=270) from position 1 to position 2,
277  // both specified as signed decimal-degrees latitude and longitude.
278  // Because Earth is no exact sphere, calculated course may be off by a tiny fraction.
279  // Courtesy of Maarten Lamers
280  double dlon = radians(long2 - long1);
281  lat1 = radians(lat1);
282  lat2 = radians(lat2);
283  double a1 = sin(dlon) * cos(lat2);
284  double a2 = sin(lat1) * cos(lat2) * cos(dlon);
285  a2 = cos(lat1) * sin(lat2) - a2;
286  a2 = atan2(a1, a2);
287  if (a2 < 0.0)
288  {
289  a2 += TWO_PI;
290  }
291  return degrees(a2);
292 }
double MyLocation::courseTo ( MyLocation to)

Calculate the course to another gps location

Definition at line 325 of file Gps.h.

References courseTo(), latitude(), and longitude().

326 {
327  return courseTo(latitude(), longitude(), to.latitude(), to.longitude());
328 }
double longitude()
Definition: Gps.h:301
double latitude()
Definition: Gps.h:295
static double courseTo(double lat1, double long1, double lat2, double long2)
Definition: Gps.h:274
double MyLocation::distanceBetween ( double  lat1,
double  long1,
double  lat2,
double  long2 
)
static

Calculate the distance between two gps positions in meter

Definition at line 248 of file Gps.h.

Referenced by distanceTo().

249 {
250  // returns distance in meters between two positions, both specified
251  // as signed decimal-degrees latitude and longitude. Uses great-circle
252  // distance computation for hypothetical sphere of radius 6372795 meters.
253  // Because Earth is no exact sphere, rounding errors may be up to 0.5%.
254  // Courtesy of Maarten Lamers
255  double delta = radians(long1 - long2);
256  double sdlong = sin(delta);
257  double cdlong = cos(delta);
258  lat1 = radians(lat1);
259  lat2 = radians(lat2);
260  double slat1 = sin(lat1);
261  double clat1 = cos(lat1);
262  double slat2 = sin(lat2);
263  double clat2 = cos(lat2);
264  delta = (clat1 * slat2) - (slat1 * clat2 * cdlong);
265  delta = sq(delta);
266  delta += sq(clat2 * sdlong);
267  delta = sqrt(delta);
268  double denom = (slat1 * slat2) + (clat1 * clat2 * cdlong);
269  delta = atan2(delta, denom);
270  return delta * 6372795;
271 }
double MyLocation::distanceTo ( MyLocation to)

Calculate the distance between to another gps location

Definition at line 319 of file Gps.h.

References distanceBetween(), latitude(), and longitude().

Referenced by MyGsmGps::getGps(), and MyGsmGps::getGpsFromGsm().

320 {
321  return distanceBetween(latitude(), longitude(), to.latitude(), to.longitude());
322 }
static double distanceBetween(double lat1, double long1, double lat2, double long2)
Definition: Gps.h:248
double longitude()
Definition: Gps.h:301
double latitude()
Definition: Gps.h:295
double MyLocation::latitude ( )

Gets the latitude

Definition at line 295 of file Gps.h.

References latitude_, and MyDegrees::value().

Referenced by courseTo(), distanceTo(), MyGsmGps::getGps(), MyGsmGps::getGpsFromGsm(), and latitudeString().

296 {
297  return latitude_.value();
298 }
MyDegrees latitude_
Latitude.
Definition: Gps.h:50
double value()
Definition: Gps.h:209
String MyLocation::latitudeString ( )

Returns the latitude as a string

Definition at line 313 of file Gps.h.

References latitude().

Referenced by MyGps::latitudeString().

314 {
315  return String(latitude(), 6);
316 }
double latitude()
Definition: Gps.h:295
double MyLocation::longitude ( )

Gets the Longitude

Definition at line 301 of file Gps.h.

References longitude_, and MyDegrees::value().

Referenced by courseTo(), distanceTo(), and longitudeString().

302 {
303  return longitude_.value();
304 }
double value()
Definition: Gps.h:209
MyDegrees longitude_
Longitude.
Definition: Gps.h:51
String MyLocation::longitudeString ( )

Returns the longitude as a string

Definition at line 307 of file Gps.h.

References longitude().

Referenced by MyGps::longitudeString().

308 {
309  return String(longitude(), 6);
310 }
double longitude()
Definition: Gps.h:301

The documentation for this class was generated from the following file: