21 #include "ns3/simulator.h"
22 #include "ns3/random-variable-stream.h"
23 #include "ns3/pointer.h"
24 #include "ns3/string.h"
35 static TypeId tid =
TypeId (
"ns3::RandomWaypointMobilityModel")
37 .SetGroupName (
"Mobility")
39 .AddAttribute (
"Speed",
40 "A random variable used to pick the speed of a random waypoint model.",
41 StringValue (
"ns3::UniformRandomVariable[Min=0.3|Max=0.7]"),
43 MakePointerChecker<RandomVariableStream> ())
44 .AddAttribute (
"Pause",
45 "A random variable used to pick the pause of a random waypoint model.",
46 StringValue (
"ns3::ConstantRandomVariable[Constant=2.0]"),
48 MakePointerChecker<RandomVariableStream> ())
49 .AddAttribute (
"PositionAllocator",
50 "The position model used to pick a destination point.",
53 MakePointerChecker<PositionAllocator> ());
66 double dx = (destination.
x - m_current.
x);
67 double dy = (destination.
y - m_current.
y);
68 double dz = (destination.
z - m_current.
z);
69 double k = speed / std::sqrt (dx*dx + dy*dy + dz*dz);
118 int64_t positionStreamsAllocated;
122 positionStreamsAllocated =
m_position->AssignStreams (stream + 2);
123 return (2 + positionStreamsAllocated);
keep track of time values and allow control of global simulation resolution
void SetStream(int64_t stream)
Specifies the stream number for this RNG stream.
hold variables of type string
Random waypoint mobility model.
Vector GetCurrentPosition(void) const
static TypeId GetTypeId(void)
Ptr< PositionAllocator > m_position
Ptr< RandomVariableStream > m_speed
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
virtual double GetValue(void)=0
Returns a random double from the underlying distribution.
Keep track of the current position and velocity of an object.
void DoInitializePrivate(void)
double CalculateDistance(const Vector3D &a, const Vector3D &b)
virtual Vector DoGetVelocity(void) const
void NotifyCourseChange(void) const
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
ConstantVelocityHelper m_helper
static void Remove(const EventId &id)
hold objects of type Ptr<T>
void SetVelocity(const Vector &vel)
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
virtual void DoSetPosition(const Vector &position)
#define NS_ASSERT_MSG(condition, message)
Ptr< RandomVariableStream > m_pause
virtual void DoInitialize(void)
virtual int64_t DoAssignStreams(int64_t)
Vector GetVelocity(void) const
virtual Vector DoGetPosition(void) const
void SetPosition(const Vector &position)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual void DoInitialize(void)