A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
constant-velocity-helper.cc
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
#include "ns3/simulator.h"
21
#include "ns3/rectangle.h"
22
#include "ns3/box.h"
23
#include "ns3/log.h"
24
#include "
constant-velocity-helper.h
"
25
26
namespace
ns3
{
27
28
NS_LOG_COMPONENT_DEFINE
(
"ConstantVelocityHelper"
);
29
30
ConstantVelocityHelper::ConstantVelocityHelper
()
31
: m_paused (true)
32
{
33
NS_LOG_FUNCTION
(
this
);
34
}
35
ConstantVelocityHelper::ConstantVelocityHelper
(
const
Vector &position)
36
: m_position (position),
37
m_paused (true)
38
{
39
NS_LOG_FUNCTION
(
this
<< position);
40
}
41
ConstantVelocityHelper::ConstantVelocityHelper
(
const
Vector &position,
42
const
Vector &vel)
43
: m_position (position),
44
m_velocity (vel),
45
m_paused (true)
46
{
47
NS_LOG_FUNCTION
(
this
<< position << vel);
48
}
49
void
50
ConstantVelocityHelper::SetPosition
(
const
Vector &position)
51
{
52
NS_LOG_FUNCTION
(
this
<< position);
53
m_position
= position;
54
m_velocity
= Vector (0.0, 0.0, 0.0);
55
m_lastUpdate
=
Simulator::Now
();
56
}
57
58
Vector
59
ConstantVelocityHelper::GetCurrentPosition
(
void
)
const
60
{
61
NS_LOG_FUNCTION
(
this
);
62
return
m_position
;
63
}
64
65
Vector
66
ConstantVelocityHelper::GetVelocity
(
void
)
const
67
{
68
NS_LOG_FUNCTION
(
this
);
69
return
m_paused
? Vector (0.0, 0.0, 0.0) :
m_velocity
;
70
}
71
void
72
ConstantVelocityHelper::SetVelocity
(
const
Vector &vel)
73
{
74
NS_LOG_FUNCTION
(
this
<< vel);
75
m_velocity
= vel;
76
m_lastUpdate
=
Simulator::Now
();
77
}
78
79
void
80
ConstantVelocityHelper::Update
(
void
)
const
81
{
82
NS_LOG_FUNCTION
(
this
);
83
Time
now =
Simulator::Now
();
84
NS_ASSERT
(
m_lastUpdate
<= now);
85
Time
deltaTime = now -
m_lastUpdate
;
86
m_lastUpdate
= now;
87
if
(
m_paused
)
88
{
89
return
;
90
}
91
double
deltaS = deltaTime.
GetSeconds
();
92
m_position
.x +=
m_velocity
.x * deltaS;
93
m_position
.y +=
m_velocity
.y * deltaS;
94
m_position
.z +=
m_velocity
.z * deltaS;
95
}
96
97
void
98
ConstantVelocityHelper::UpdateWithBounds
(
const
Rectangle
&bounds)
const
99
{
100
NS_LOG_FUNCTION
(
this
<< bounds);
101
Update
();
102
m_position
.x =
std::min
(bounds.
xMax
,
m_position
.x);
103
m_position
.x =
std::max
(bounds.
xMin
,
m_position
.x);
104
m_position
.y =
std::min
(bounds.
yMax
,
m_position
.y);
105
m_position
.y =
std::max
(bounds.
yMin
,
m_position
.y);
106
}
107
108
void
109
ConstantVelocityHelper::UpdateWithBounds
(
const
Box
&bounds)
const
110
{
111
NS_LOG_FUNCTION
(
this
<< bounds);
112
Update
();
113
m_position
.x =
std::min
(bounds.
xMax
,
m_position
.x);
114
m_position
.x =
std::max
(bounds.
xMin
,
m_position
.x);
115
m_position
.y =
std::min
(bounds.
yMax
,
m_position
.y);
116
m_position
.y =
std::max
(bounds.
yMin
,
m_position
.y);
117
m_position
.z =
std::min
(bounds.
zMax
,
m_position
.z);
118
m_position
.z =
std::max
(bounds.
zMin
,
m_position
.z);
119
}
120
121
void
122
ConstantVelocityHelper::Pause
(
void
)
123
{
124
NS_LOG_FUNCTION
(
this
);
125
m_paused
=
true
;
126
}
127
128
void
129
ConstantVelocityHelper::Unpause
(
void
)
130
{
131
NS_LOG_FUNCTION
(
this
);
132
m_paused
=
false
;
133
}
134
135
}
// namespace ns3
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:205
ns3::ConstantVelocityHelper::SetVelocity
void SetVelocity(const Vector &vel)
Set new velocity vector.
Definition:
constant-velocity-helper.cc:72
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition:
assert.h:67
min
#define min(a, b)
Definition:
80211b.c:42
ns3::Simulator::Now
static Time Now(void)
Return the current simulation virtual time.
Definition:
simulator.cc:195
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Box::zMin
double zMin
The z coordinate of the down bound of the box.
Definition:
box.h:118
ns3::Rectangle::yMin
double yMin
The y coordinate of the bottom bound of the rectangle.
Definition:
rectangle.h:90
ns3::Box::xMin
double xMin
The x coordinate of the left bound of the box.
Definition:
box.h:110
ns3::ConstantVelocityHelper::ConstantVelocityHelper
ConstantVelocityHelper()
Definition:
constant-velocity-helper.cc:30
ns3::ConstantVelocityHelper::m_lastUpdate
Time m_lastUpdate
time of last update
Definition:
constant-velocity-helper.h:97
ns3::Box::yMin
double yMin
The y coordinate of the bottom bound of the box.
Definition:
box.h:114
ns3::Rectangle::xMax
double xMax
The x coordinate of the right bound of the rectangle.
Definition:
rectangle.h:89
ns3::ConstantVelocityHelper::m_position
Vector m_position
state variable for current position
Definition:
constant-velocity-helper.h:98
max
#define max(a, b)
Definition:
80211b.c:43
ns3::ConstantVelocityHelper::GetCurrentPosition
Vector GetCurrentPosition(void) const
Get current position vector.
Definition:
constant-velocity-helper.cc:59
ns3::ConstantVelocityHelper::m_velocity
Vector m_velocity
state variable for velocity
Definition:
constant-velocity-helper.h:99
ns3::ConstantVelocityHelper::m_paused
bool m_paused
state variable for paused
Definition:
constant-velocity-helper.h:100
constant-velocity-helper.h
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:104
ns3::Rectangle::yMax
double yMax
The y coordinate of the top bound of the rectangle.
Definition:
rectangle.h:91
ns3::ConstantVelocityHelper::Unpause
void Unpause(void)
Resume mobility from current position at current velocity.
Definition:
constant-velocity-helper.cc:129
ns3::Box::zMax
double zMax
The z coordinate of the up bound of the box.
Definition:
box.h:120
ns3::Rectangle
a 2d rectangle
Definition:
rectangle.h:35
ns3::ConstantVelocityHelper::UpdateWithBounds
void UpdateWithBounds(const Rectangle &rectangle) const
Update position, if not paused, from last position and time of last update.
Definition:
constant-velocity-helper.cc:98
ns3::ConstantVelocityHelper::Update
void Update(void) const
Update position, if not paused, from last position and time of last update.
Definition:
constant-velocity-helper.cc:80
ns3::Box
a 3d box
Definition:
box.h:35
ns3::ConstantVelocityHelper::SetPosition
void SetPosition(const Vector &position)
Set position vector.
Definition:
constant-velocity-helper.cc:50
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition:
log-macros-enabled.h:244
ns3::Rectangle::xMin
double xMin
The x coordinate of the left bound of the rectangle.
Definition:
rectangle.h:88
ns3::ConstantVelocityHelper::Pause
void Pause(void)
Pause mobility at current position.
Definition:
constant-velocity-helper.cc:122
ns3::Box::xMax
double xMax
The x coordinate of the right bound of the box.
Definition:
box.h:112
ns3::Time::GetSeconds
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
Definition:
nstime.h:380
ns3::ConstantVelocityHelper::GetVelocity
Vector GetVelocity(void) const
Get velocity; if paused, will return a zero vector.
Definition:
constant-velocity-helper.cc:66
ns3::Box::yMax
double yMax
The y coordinate of the top bound of the box.
Definition:
box.h:116
src
mobility
model
constant-velocity-helper.cc
Generated on Fri Oct 1 2021 17:03:27 for ns-3 by
1.8.20