INET Framework for OMNeT++/OMNEST
inet::SimpleGeographicCoordinateSystem Class Reference

#include <GeographicCoordinateSystem.h>

Inheritance diagram for inet::SimpleGeographicCoordinateSystem:
inet::IGeographicCoordinateSystem

Public Member Functions

virtual GeoCoord getScenePosition () const override
 
virtual Quaternion getSceneOrientation () const override
 
virtual Coord computeSceneCoordinate (const GeoCoord &geographicCoordinate) const override
 
virtual GeoCoord computeGeographicCoordinate (const Coord &sceneCoordinate) const override
 

Protected Member Functions

virtual void initialize (int stage) override
 

Protected Attributes

double metersPerDegree = 111320
 
deg sceneLatitude = deg(NaN)
 
deg sceneLongitude = deg(NaN)
 
m sceneAltitude = m(NaN)
 

Member Function Documentation

◆ computeGeographicCoordinate()

GeoCoord inet::SimpleGeographicCoordinateSystem::computeGeographicCoordinate ( const Coord sceneCoordinate) const
overridevirtual

Implements inet::IGeographicCoordinateSystem.

38 {
39  auto geograpicLatitude = sceneLatitude - deg(sceneCoordinate.y / metersPerDegree);
40  auto geograpicLongitude = sceneLongitude + deg(sceneCoordinate.x / metersPerDegree / cos(fabs(rad(sceneLatitude).get())));
41  return GeoCoord(geograpicLatitude, geograpicLongitude, m(sceneCoordinate.z) - sceneAltitude);
42 }

◆ computeSceneCoordinate()

Coord inet::SimpleGeographicCoordinateSystem::computeSceneCoordinate ( const GeoCoord geographicCoordinate) const
overridevirtual

Implements inet::IGeographicCoordinateSystem.

31 {
32  double sceneX = deg(geographicCoordinate.longitude - sceneLongitude).get() * cos(fabs(rad(sceneLatitude).get())) * metersPerDegree;
33  double sceneY = deg(sceneLatitude - geographicCoordinate.latitude).get() * metersPerDegree;
34  return Coord(sceneX, sceneY, m(geographicCoordinate.altitude + sceneAltitude).get());
35 }

◆ getSceneOrientation()

virtual Quaternion inet::SimpleGeographicCoordinateSystem::getSceneOrientation ( ) const
inlineoverridevirtual

◆ getScenePosition()

virtual GeoCoord inet::SimpleGeographicCoordinateSystem::getScenePosition ( ) const
inlineoverridevirtual

◆ initialize()

void inet::SimpleGeographicCoordinateSystem::initialize ( int  stage)
overrideprotectedvirtual
22 {
23  if (stage == INITSTAGE_LOCAL) {
24  sceneLatitude = deg(par("sceneLatitude"));
25  sceneLongitude = deg(par("sceneLongitude"));
26  sceneAltitude = m(par("sceneAltitude"));
27  }
28 }

Member Data Documentation

◆ metersPerDegree

double inet::SimpleGeographicCoordinateSystem::metersPerDegree = 111320
protected

◆ sceneAltitude

m inet::SimpleGeographicCoordinateSystem::sceneAltitude = m(NaN)
protected

◆ sceneLatitude

deg inet::SimpleGeographicCoordinateSystem::sceneLatitude = deg(NaN)
protected

◆ sceneLongitude

deg inet::SimpleGeographicCoordinateSystem::sceneLongitude = deg(NaN)
protected

The documentation for this class was generated from the following files:
inet::units::units::deg
fscale< rad, rad2degScale > deg
Definition: Units.h:1158
inet::units::cos
Value cos(const value< Value, Unit > &angle)
Definition: Units.h:1524
inet::SimpleGeographicCoordinateSystem::metersPerDegree
double metersPerDegree
Definition: GeographicCoordinateSystem.h:50
inet::SimpleGeographicCoordinateSystem::sceneLongitude
deg sceneLongitude
Definition: GeographicCoordinateSystem.h:52
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::Quaternion::IDENTITY
static Quaternion IDENTITY
Definition: Quaternion.h:20
inet::SimpleGeographicCoordinateSystem::sceneLatitude
deg sceneLatitude
Definition: GeographicCoordinateSystem.h:51
inet::SimpleGeographicCoordinateSystem::sceneAltitude
m sceneAltitude
Definition: GeographicCoordinateSystem.h:53
inet::units::values::m
value< double, units::m > m
Definition: Units.h:1233
inet::units::values::rad
value< double, units::rad > rad
Definition: Units.h:1245