24 #include "ns3/trace-source-accessor.h"
35 .SetGroupName (
"Mobility")
36 .AddAttribute (
"Position",
"The current position of the mobility model.",
38 VectorValue (Vector (0.0, 0.0, 0.0)),
42 .AddAttribute (
"Velocity",
"The current velocity of the mobility model.",
44 VectorValue (Vector (0.0, 0.0, 0.0)),
47 .AddTraceSource (
"CourseChange",
48 "The value of the position and/or velocity vector changed",
50 "ns3::MobilityModel::TracedCallback")
83 Vector oPosition = other->DoGetPosition ();
91 return (
GetVelocity () - other->GetVelocity ()).GetLength ();
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
Smart pointer class similar to boost::intrusive_ptr.
double GetDistanceFrom(Ptr< const MobilityModel > position) const
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Ptr< const AttributeChecker > MakeVectorChecker(void)
virtual Vector DoGetPosition(void) const =0
Vector GetPosition(void) const
virtual ~MobilityModel()=0
Vector GetVelocity(void) const
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
ns3::TracedCallback< Ptr< const MobilityModel > > m_courseChangeTrace
Used to alert subscribers that a change in direction, velocity, or position has occurred.
double CalculateDistance(const Vector3D &a, const Vector3D &b)
void NotifyCourseChange(void) const
Must be invoked by subclasses when the course of the position changes to notify course change listene...
static TypeId GetTypeId(void)
Register this type with the TypeId system.
The attribute can be written.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetPosition(const Vector &position)
The attribute can be read.
virtual void DoSetPosition(const Vector &position)=0
A base class which provides memory management and object aggregation.
virtual Vector DoGetVelocity(void) const =0
virtual int64_t DoAssignStreams(int64_t start)
The default implementation does nothing but return the passed-in parameter.
a unique identifier for an interface.
double GetRelativeSpeed(Ptr< const MobilityModel > other) const
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Ptr< const AttributeAccessor > MakeVectorAccessor(T1 a1)