A Discrete-Event Network Simulator
API
gauss-markov-mobility-model.h
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2009 Dan Broyles
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: Dan Broyles <dbroyl01@ku.edu>
19 * Thanks to Kevin Peters, faculty advisor James P.G. Sterbenz, and the ResiliNets
20 * initiative at The University of Kansas, https://wiki.ittc.ku.edu/resilinets
21 */
22#ifndef GAUSS_MARKOV_MOBILITY_MODEL_H
23#define GAUSS_MARKOV_MOBILITY_MODEL_H
24
26#include "mobility-model.h"
27#include "position-allocator.h"
28#include "ns3/ptr.h"
29#include "ns3/object.h"
30#include "ns3/nstime.h"
31#include "ns3/event-id.h"
32#include "ns3/box.h"
33#include "ns3/random-variable-stream.h"
34
35namespace ns3 {
36
81{
82public:
87 static TypeId GetTypeId (void);
89private:
93 void Start (void);
98 void DoWalk (Time timeLeft);
99 virtual void DoDispose (void);
100 virtual Vector DoGetPosition (void) const;
101 virtual void DoSetPosition (const Vector &position);
102 virtual Vector DoGetVelocity (void) const;
103 virtual int64_t DoAssignStreams (int64_t);
106 double m_alpha;
109 double m_meanPitch;
110 double m_Velocity;
111 double m_Direction;
112 double m_Pitch;
121};
122
123} // namespace ns3
124
125#endif /* GAUSS_MARKOV_MOBILITY_MODEL_H */
a 3d box
Definition: box.h:35
Utility class used to move node with constant velocity.
An identifier for simulation events.
Definition: event-id.h:54
Ptr< NormalRandomVariable > m_normalDirection
Gaussian rv for next direction value.
Ptr< NormalRandomVariable > m_normalPitch
Gaussian rv for next pitch.
void DoWalk(Time timeLeft)
Perform a walk operation.
double m_meanVelocity
current mean velocity
double m_meanDirection
current mean direction
virtual int64_t DoAssignStreams(int64_t)
The default implementation does nothing but return the passed-in parameter.
Ptr< NormalRandomVariable > m_normalVelocity
Gaussian rv used to for next velocity.
EventId m_event
event id of scheduled start
ConstantVelocityHelper m_helper
constant velocity helper
virtual Vector DoGetPosition(void) const
Ptr< RandomVariableStream > m_rndMeanPitch
rv used to assign avg.
Ptr< RandomVariableStream > m_rndMeanVelocity
rv used to assign avg velocity
virtual void DoDispose(void)
Destructor implementation.
void Start(void)
Initialize the model and calculate new velocity, direction, and pitch.
virtual void DoSetPosition(const Vector &position)
Ptr< RandomVariableStream > m_rndMeanDirection
rv used to assign avg direction
double m_alpha
tunable constant in the model
static TypeId GetTypeId(void)
Register this type with the TypeId system.
Time m_timeStep
duraiton after which direction and speed should change
virtual Vector DoGetVelocity(void) const
Keep track of the current position and velocity of an object.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.