A Discrete-Event Network Simulator
API
random-walk-2d-mobility-model.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2006,2007 INRIA
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18  */
19 #ifndef RANDOM_WALK_2D_MOBILITY_MODEL_H
20 #define RANDOM_WALK_2D_MOBILITY_MODEL_H
21 
23 #include "mobility-model.h"
24 #include "rectangle.h"
25 
26 #include "ns3/event-id.h"
27 #include "ns3/nstime.h"
28 #include "ns3/object.h"
29 #include "ns3/random-variable-stream.h"
30 
31 namespace ns3
32 {
33 
52 {
53  public:
58  static TypeId GetTypeId();
59 
61  enum Mode
62  {
64  MODE_TIME
65  };
66 
67  private:
72  void Rebound(Time timeLeft);
78  void DoWalk(Time timeLeft);
82  void DoInitializePrivate();
83  void DoDispose() override;
84  void DoInitialize() override;
85  Vector DoGetPosition() const override;
86  void DoSetPosition(const Vector& position) override;
87  Vector DoGetVelocity() const override;
88  int64_t DoAssignStreams(int64_t) override;
89 
93  double m_modeDistance;
98 };
99 
100 } // namespace ns3
101 
102 #endif /* RANDOM_WALK_2D_MOBILITY_MODEL_H */
Utility class used to move node with constant velocity.
An identifier for simulation events.
Definition: event-id.h:55
Keep track of the current position and velocity of an object.
Ptr< RandomVariableStream > m_speed
rv for picking speed
static TypeId GetTypeId()
Register this type with the TypeId system.
void DoInitialize() override
Initialize() implementation.
double m_modeDistance
Change direction and speed after this distance.
void DoInitializePrivate()
Perform initialization of the object before MobilityModel::DoInitialize ()
void DoWalk(Time timeLeft)
Walk according to position and velocity, until distance is reached, time is reached,...
Mode
An enum representing the different working modes of this module.
void Rebound(Time timeLeft)
Performs the rebound of the node if it reaches a boundary.
ConstantVelocityHelper m_helper
helper for this object
Time m_modeTime
Change current direction and speed after this delay.
Rectangle m_bounds
Bounds of the area to cruise.
void DoSetPosition(const Vector &position) override
void DoDispose() override
Destructor implementation.
Ptr< RandomVariableStream > m_direction
rv for picking direction
int64_t DoAssignStreams(int64_t) override
The default implementation does nothing but return the passed-in parameter.
Mode m_mode
whether in time or distance mode
a 2d rectangle
Definition: rectangle.h:35
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.