A Discrete-Event Network Simulator
API
random-walk-2d-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) 2006,2007 INRIA
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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 #ifndef RANDOM_WALK_2D_MOBILITY_MODEL_H
21 #define RANDOM_WALK_2D_MOBILITY_MODEL_H
22 
23 #include "ns3/object.h"
24 #include "ns3/nstime.h"
25 #include "ns3/event-id.h"
26 #include "ns3/rectangle.h"
27 #include "ns3/random-variable-stream.h"
28 #include "mobility-model.h"
30 
31 namespace ns3 {
32 
33 
47 {
48 public:
53  static TypeId GetTypeId (void);
55  enum Mode {
58  };
59 
60 private:
65  void Rebound (Time timeLeft);
70  void DoWalk (Time timeLeft);
74  void DoInitializePrivate (void);
75  virtual void DoDispose (void);
76  virtual void DoInitialize (void);
77  virtual Vector DoGetPosition (void) const;
78  virtual void DoSetPosition (const Vector &position);
79  virtual Vector DoGetVelocity (void) const;
80  virtual int64_t DoAssignStreams (int64_t);
81 
84  enum Mode m_mode;
85  double m_modeDistance;
90 };
91 
92 
93 } // namespace ns3
94 
95 #endif /* RANDOM_WALK_2D_MOBILITY_MODEL_H */
double m_modeDistance
Change direction and speed after this distance.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
Utility class used to move node with constant velocity.
Keep track of the current position and velocity of an object.
2D random walk mobility model.
ConstantVelocityHelper m_helper
helper for this object
Mode
An enum representing the different working modes of this module.
virtual void DoSetPosition(const Vector &position)
void Rebound(Time timeLeft)
Performs the rebound of the node if it reaches a boundary.
Time m_modeTime
Change current direction and speed after this delay.
static TypeId GetTypeId(void)
Register this type with the TypeId system.
virtual void DoDispose(void)
Destructor implementation.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ptr< RandomVariableStream > m_speed
rv for picking speed
enum Mode m_mode
whether in time or distance mode
void DoWalk(Time timeLeft)
Walk according to position and velocity, until distance is reached, time is reached, or intersection with the bounding box.
virtual void DoInitialize(void)
Initialize() implementation.
An identifier for simulation events.
Definition: event-id.h:53
Ptr< RandomVariableStream > m_direction
rv for picking direction
void DoInitializePrivate(void)
Perform initialization of the object before MobilityModel::DoInitialize ()
Rectangle m_bounds
Bounds of the area to cruise.
a unique identifier for an interface.
Definition: type-id.h:58
a 2d rectangle
Definition: rectangle.h:34
virtual int64_t DoAssignStreams(int64_t)
The default implementation does nothing but return the passed-in parameter.