DESERT 4.0.0
woss-gmmobility-3d.h
Go to the documentation of this file.
1//
2// Copyright (c) 2012 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
41#ifndef _WOSS_GMMOBMODEL_3D_
42#define _WOSS_GMMOBMODEL_3D_
43
44#include "uwrandomlib.h"
45#include <cmath>
46#include <iostream>
47#include <plugin.h>
48#include <string>
49#include <uw-woss-position.h>
50
51#define sgn(x) (((x) == 0.0) ? 0.0 : ((x) / fabs(x)))
52#define pi (4 * atan(1.0))
53#define earth_radius 6371000.0
54
55// extern double Gauss(double,double,int); // gaussian random variable
56// with average standard deviation
57
67class WossGMMob3D : public WossPosition
68{
69public:
77 virtual ~WossGMMob3D();
83 virtual double getStartX();
84
90 virtual double getStartY();
91
97
103 virtual void setLat(double x_coord, double y_coord);
104 virtual void setLong(double x_coord, double y_coord);
105
106 double newx, newy, newz;
108 double vx, vy, vz;
125 virtual int command(int argc, const char *const *argv);
126
127protected:
132 class UpdateTimerPosition : public TimerHandler
133 {
134 public:
139 : TimerHandler()
140 {
141 module = m;
142 }
143
148 {
149 }
150
154 virtual void
155 schedule(double val)
156 {
157 resched(val);
158 }
159
160 protected:
161 virtual void expire(Event *e);
164 WossGMMob3D *module;
165 };
166
171 virtual void update();
172
177 double Gaussian();
178
188 double alpha_;
191 double alphaPitch_;
194 double speedMean_;
199 double pitchMean_;
201 double sigmaPitch_;
212 double updateTime_;
217 double speed_;
219 double direction_;
223 int maddr;
230 double start_x;
232 double start_y;
239 double pitch_;
241 double zmin_;
249};
250
251#endif /*_WOSS_GMMOBMODEL_3D_*/
Definition uwrandomlib.h:59
Definition woss-gmmobility-3d.h:133
UpdateTimerPosition(WossGMMob3D *m)
Definition woss-gmmobility-3d.h:138
virtual void schedule(double val)
Definition woss-gmmobility-3d.h:155
virtual void expire(Event *e)
Definition woss-gmmobility-3d.cpp:64
virtual ~UpdateTimerPosition()
Definition woss-gmmobility-3d.h:147
Definition woss-gmmobility-3d.h:68
double direction_
Definition woss-gmmobility-3d.h:219
double vy
Definition woss-gmmobility-3d.h:108
double speedMean_
Definition woss-gmmobility-3d.h:194
double Gaussian()
Definition woss-gmmobility-3d.cpp:240
double sigmaPitch_
Definition woss-gmmobility-3d.h:201
int maddr
Definition woss-gmmobility-3d.h:223
BoundType
Definition woss-gmmobility-3d.h:96
@ HARDWALL
Definition woss-gmmobility-3d.h:96
@ THOROIDAL
Definition woss-gmmobility-3d.h:96
@ SPHERIC
Definition woss-gmmobility-3d.h:96
@ REBOUNCE
Definition woss-gmmobility-3d.h:96
BoundType bound_
Definition woss-gmmobility-3d.h:203
int mtrace_
Definition woss-gmmobility-3d.h:234
virtual void setLong(double x_coord, double y_coord)
Definition woss-gmmobility-3d.cpp:230
double alphaPitch_
Definition woss-gmmobility-3d.h:191
double vz
Definition woss-gmmobility-3d.h:108
double x_coord
Definition woss-gmmobility-3d.h:110
double yFieldWidth_
Definition woss-gmmobility-3d.h:182
virtual int command(int argc, const char *const *argv)
Definition woss-gmmobility-3d.cpp:125
virtual double getStartX()
Definition woss-gmmobility-3d.cpp:193
virtual double getStartY()
Definition woss-gmmobility-3d.cpp:204
string gm3dTraceFile
Definition woss-gmmobility-3d.h:243
double alpha_
Definition woss-gmmobility-3d.h:188
virtual ~WossGMMob3D()
Definition woss-gmmobility-3d.cpp:120
int wossgm_debug_
Definition woss-gmmobility-3d.h:221
double newz
Definition woss-gmmobility-3d.h:106
virtual void update()
Definition woss-gmmobility-3d.cpp:264
double zFieldWidth_
Definition woss-gmmobility-3d.h:185
double xFieldWidth_
Definition woss-gmmobility-3d.h:179
double nextUpdateTime_
Definition woss-gmmobility-3d.h:214
double start_y
Definition woss-gmmobility-3d.h:232
double pitchMean_
Definition woss-gmmobility-3d.h:199
double newy
Definition woss-gmmobility-3d.h:106
virtual void setLat(double x_coord, double y_coord)
Definition woss-gmmobility-3d.cpp:215
int mtrace_of_node_
Definition woss-gmmobility-3d.h:236
double y_coord
Definition woss-gmmobility-3d.h:110
WossGMMob3D()
Definition woss-gmmobility-3d.cpp:76
double speed_
Definition woss-gmmobility-3d.h:217
UpdateTimerPosition update_timer_position
Definition woss-gmmobility-3d.h:245
double updateTime_
Definition woss-gmmobility-3d.h:212
double zmin_
Definition woss-gmmobility-3d.h:241
double newx
Definition woss-gmmobility-3d.h:106
double start_longitude
Definition woss-gmmobility-3d.h:228
double vx
Definition woss-gmmobility-3d.h:108
double directionMean_
Definition woss-gmmobility-3d.h:197
double start_x
Definition woss-gmmobility-3d.h:230
double pitch_
Definition woss-gmmobility-3d.h:239
double start_latitude
Definition woss-gmmobility-3d.h:226
Uwrandomlib randlib
Definition woss-gmmobility-3d.h:248
double z_coord
Definition woss-gmmobility-3d.h:110
Random function header.