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
25#include "ns3/event-id.h"
26#include "ns3/nstime.h"
27#include "ns3/object.h"
28#include "ns3/random-variable-stream.h"
29#include "ns3/rectangle.h"
30
31namespace ns3
32{
33
47{
48 public:
53 static TypeId GetTypeId();
54
56 enum Mode
57 {
60 };
61
62 private:
67 void Rebound(Time timeLeft);
73 void DoWalk(Time timeLeft);
78 void DoDispose() override;
79 void DoInitialize() override;
80 Vector DoGetPosition() const override;
81 void DoSetPosition(const Vector& position) override;
82 Vector DoGetVelocity() const override;
83 int64_t DoAssignStreams(int64_t) override;
84
87 enum Mode m_mode;
93};
94
95} // namespace ns3
96
97#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,...
enum Mode m_mode
whether in time or distance mode
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.
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:60
Every class exported by the ns3 library is enclosed in the ns3 namespace.