20 #include "ns3/simulator.h"
24 #include "ns3/string.h"
25 #include "ns3/pointer.h"
40 static TypeId tid =
TypeId (
"ns3::RandomDirection2dMobilityModel")
42 .SetGroupName (
"Mobility")
44 .AddAttribute (
"Bounds",
"The 2d bounding area",
47 MakeRectangleChecker ())
48 .AddAttribute (
"Speed",
"A random variable to control the speed (m/s).",
49 StringValue (
"ns3::UniformRandomVariable[Min=1.0|Max=2.0]"),
51 MakePointerChecker<RandomVariableStream> ())
52 .AddAttribute (
"Pause",
"A random variable to control the pause (s).",
53 StringValue (
"ns3::ConstantRandomVariable[Constant=2.0]"),
55 MakePointerChecker<RandomVariableStream> ())
62 m_direction = CreateObject <UniformRandomVariable> ();
103 const Vector vector (std::cos (direction) * speed,
104 std::sin (direction) * speed,
128 direction += -
PI / 2;
Ptr< UniformRandomVariable > m_direction
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.
Vector CalculateIntersection(const Vector ¤t, const Vector &speed) const
hold variables of type string
virtual Vector DoGetVelocity(void) const
Ptr< RandomVariableStream > m_speed
void ResetDirectionAndSpeed(void)
Vector GetCurrentPosition(void) const
#define NS_LOG_COMPONENT_DEFINE(name)
ConstantVelocityHelper m_helper
virtual void DoInitialize(void)
virtual void DoDispose(void)
#define NS_LOG_FUNCTION_NOARGS()
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
void DoInitializePrivate(void)
virtual double GetValue(void)=0
Returns a random double from the underlying distribution.
hold objects of type ns3::Rectangle
Keep track of the current position and velocity of an object.
double CalculateDistance(const Vector3D &a, const Vector3D &b)
void NotifyCourseChange(void) const
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual void DoSetPosition(const Vector &position)
virtual void DoDispose(void)
virtual int64_t DoAssignStreams(int64_t)
static void Remove(const EventId &id)
void SetVelocity(const Vector &vel)
RandomDirection2dMobilityModel()
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
static TypeId GetTypeId(void)
Vector GetVelocity(void) const
Side GetClosestSide(const Vector &position) const
void UpdateWithBounds(const Rectangle &rectangle) const
void SetDirectionAndSpeed(double direction)
Ptr< RandomVariableStream > m_pause
void SetPosition(const Vector &position)
Random direction mobility model.
virtual Vector DoGetPosition(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual void DoInitialize(void)