Hierarchical mobility model. More...
#include <hierarchical-mobility-model.h>
Public Member Functions | |
HierarchicalMobilityModel () | |
Ptr< MobilityModel > | GetChild (void) const |
Ptr< MobilityModel > | GetParent (void) const |
void | SetChild (Ptr< MobilityModel > model) |
void | SetParent (Ptr< MobilityModel > model) |
![]() | |
MobilityModel () | |
virtual | ~MobilityModel ()=0 |
int64_t | AssignStreams (int64_t stream) |
double | GetDistanceFrom (Ptr< const MobilityModel > position) const |
Vector | GetPosition (void) const |
double | GetRelativeSpeed (Ptr< const MobilityModel > other) const |
Vector | GetVelocity (void) const |
void | SetPosition (const Vector &position) |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
void | ChildChanged (Ptr< const MobilityModel > model) |
virtual Vector | DoGetPosition (void) const |
virtual Vector | DoGetVelocity (void) const |
virtual void | DoSetPosition (const Vector &position) |
void | ParentChanged (Ptr< const MobilityModel > model) |
Private Attributes | |
Ptr< MobilityModel > | m_child |
Ptr< MobilityModel > | m_parent |
Additional Inherited Members | |
![]() | |
void | NotifyCourseChange (void) const |
Hierarchical mobility model.
This model allows you to specify the position of a child object relative to a parent object.
Basically this is a mobility model that combines two other mobility models: a "parent" model and a "child" model. The position of the hierarchical model is always the vector sum of the parent + child positions, so that if the parent model "moves", then this model will report an equal relative movement. Useful, for instance, if you want to simulate a node inside another node that moves, such as a vehicle.
Setting the position on this model is always done using world absolute coordinates, and it changes only the child mobility model position, never the parent. The child mobility model always uses a coordinate system relative to the parent model position.
ns3::HierarchicalMobilityModel is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 57 of file hierarchical-mobility-model.h.
ns3::HierarchicalMobilityModel::HierarchicalMobilityModel | ( | ) |
Definition at line 47 of file hierarchical-mobility-model.cc.
|
private |
Definition at line 171 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::NotifyCourseChange().
Referenced by SetChild().
|
privatevirtual |
Definition at line 112 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::GetPosition(), m_child, m_parent, ns3::Vector3D::x, ns3::Vector3D::y, and ns3::Vector3D::z.
|
privatevirtual |
Definition at line 147 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::GetVelocity(), m_child, m_parent, ns3::Vector3D::x, ns3::Vector3D::y, and ns3::Vector3D::z.
|
privatevirtual |
Definition at line 125 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::GetPosition(), m_child, m_parent, ns3::MobilityModel::SetPosition(), ns3::Vector3D::x, ns3::Vector3D::y, and ns3::Vector3D::z.
Ptr< MobilityModel > ns3::HierarchicalMobilityModel::GetChild | ( | void | ) | const |
This allows you to get access to the position of the child relative to its parent.
Definition at line 100 of file hierarchical-mobility-model.cc.
References m_child.
Referenced by GetTypeId().
Ptr< MobilityModel > ns3::HierarchicalMobilityModel::GetParent | ( | void | ) | const |
This allows you to get access to the position of the parent mobility model which is used as the reference position by the child mobility model.
Definition at line 106 of file hierarchical-mobility-model.cc.
References m_parent.
Referenced by GetTypeId().
|
static |
Reimplemented from ns3::MobilityModel.
Definition at line 28 of file hierarchical-mobility-model.cc.
References GetChild(), GetParent(), SetChild(), SetParent(), and ns3::TypeId::SetParent().
|
private |
Definition at line 165 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::NotifyCourseChange().
Referenced by SetParent().
void ns3::HierarchicalMobilityModel::SetChild | ( | Ptr< MobilityModel > | model | ) |
Sets the child mobility model to a new one. If before there already existed a child model, then the child mobility model current position is also modified to ensure that the composite position is preserved.
model | new mobility model child |
Definition at line 54 of file hierarchical-mobility-model.cc.
References ChildChanged(), ns3::MobilityModel::GetPosition(), m_child, ns3::MakeCallback(), ns3::MobilityModel::SetPosition(), ns3::ObjectBase::TraceConnectWithoutContext(), and ns3::ObjectBase::TraceDisconnectWithoutContext().
Referenced by GetTypeId().
void ns3::HierarchicalMobilityModel::SetParent | ( | Ptr< MobilityModel > | model | ) |
Sets the parent mobility model to a new one. If before there already existed a child model, then the child mobility model current position is also modified to ensure that the composite position is preserved.
model | new mobility model parent |
Definition at line 75 of file hierarchical-mobility-model.cc.
References ns3::MobilityModel::GetPosition(), m_child, m_parent, ns3::MakeCallback(), ParentChanged(), ns3::MobilityModel::SetPosition(), ns3::ObjectBase::TraceConnectWithoutContext(), and ns3::ObjectBase::TraceDisconnectWithoutContext().
Referenced by GetTypeId().
|
private |
Definition at line 104 of file hierarchical-mobility-model.h.
Referenced by DoGetPosition(), DoGetVelocity(), DoSetPosition(), GetChild(), SetChild(), and SetParent().
|
private |
Definition at line 105 of file hierarchical-mobility-model.h.
Referenced by DoGetPosition(), DoGetVelocity(), DoSetPosition(), GetParent(), and SetParent().