22 #include "ns3/double.h"
23 #include "ns3/string.h"
24 #include "ns3/pointer.h"
25 #include "ns3/simulator.h"
38 static TypeId tid =
TypeId (
"ns3::RandomWalk2dMobilityModel")
40 .SetGroupName (
"Mobility")
42 .AddAttribute (
"Bounds",
43 "Bounds of the area to cruise.",
46 MakeRectangleChecker ())
47 .AddAttribute (
"Time",
48 "Change current direction and speed after moving for this delay.",
52 .AddAttribute (
"Distance",
53 "Change current direction and speed after moving for this distance.",
56 MakeDoubleChecker<double> ())
57 .AddAttribute (
"Mode",
58 "The mode indicates the condition used to "
59 "change the current speed and direction",
64 .AddAttribute (
"Direction",
65 "A random variable used to pick the direction (gradients).",
66 StringValue (
"ns3::UniformRandomVariable[Min=0.0|Max=6.283184]"),
68 MakePointerChecker<RandomVariableStream> ())
69 .AddAttribute (
"Speed",
70 "A random variable used to pick the speed (m/s).",
71 StringValue (
"ns3::UniformRandomVariable[Min=2.0|Max=4.0]"),
73 MakePointerChecker<RandomVariableStream> ());
90 Vector vector (std::cos (direction) * speed,
91 std::sin (direction) * speed,
113 Vector nextPosition = position;
124 Time delay = Seconds ((nextPosition.
x - position.
x) / speed.
x);
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.
Ptr< const AttributeChecker > MakeEnumChecker(int v1, std::string n1, int v2, std::string n2, int v3, std::string n3, int v4, std::string n4, int v5, std::string n5, int v6, std::string n6, int v7, std::string n7, int v8, std::string n8, int v9, std::string n9, int v10, std::string n10, int v11, std::string n11, int v12, std::string n12, int v13, std::string n13, int v14, std::string n14, int v15, std::string n15, int v16, std::string n16, int v17, std::string n17, int v18, std::string n18, int v19, std::string n19, int v20, std::string n20, int v21, std::string n21, int v22, std::string n22)
virtual Vector DoGetPosition(void) const
Vector CalculateIntersection(const Vector ¤t, const Vector &speed) const
hold variables of type string
Vector GetCurrentPosition(void) const
#define NS_ASSERT(condition)
#define NS_LOG_COMPONENT_DEFINE(name)
virtual void DoDispose(void)
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
virtual double GetValue(void)=0
Returns a random double from the underlying distribution.
hold objects of type ns3::Rectangle
virtual Vector DoGetVelocity(void) const
Keep track of the current position and velocity of an object.
2D random walk mobility model.
double GetSeconds(void) const
ConstantVelocityHelper m_helper
hold variables of type 'enum'
virtual void DoSetPosition(const Vector &position)
hold objects of type ns3::Time
bool IsInside(const Vector &position) const
void NotifyCourseChange(void) const
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
void Rebound(Time timeLeft)
static TypeId GetTypeId(void)
static void Remove(const EventId &id)
virtual void DoDispose(void)
Ptr< RandomVariableStream > m_speed
void SetVelocity(const Vector &vel)
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
void DoWalk(Time timeLeft)
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
virtual void DoInitialize(void)
Vector GetVelocity(void) const
Side GetClosestSide(const Vector &position) const
void UpdateWithBounds(const Rectangle &rectangle) const
Ptr< RandomVariableStream > m_direction
void DoInitializePrivate(void)
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. Both limits are inclusive.
void SetPosition(const Vector &position)
Hold an floating point type.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual void DoInitialize(void)
virtual int64_t DoAssignStreams(int64_t)