18 #ifndef IGNITION_PHYSICS_FREEGROUP_HH_ 19 #define IGNITION_PHYSICS_FREEGROUP_HH_ 29 DETAIL_IGN_PHYSICS_DEFINE_ENTITY(FreeGroup)
32 class IGNITION_PHYSICS_VISIBLE FindFreeGroupFeature :
public virtual Feature
46 public:
template <
typename PolicyT,
typename FeaturesT>
47 class Model :
public virtual Feature::Model<PolicyT, FeaturesT>
49 using FreeGroupPtrType = FreeGroupPtr<PolicyT, FeaturesT>;
50 using ConstFreeGroupPtrType = ConstFreeGroupPtr<PolicyT, FeaturesT>;
55 public: FreeGroupPtrType FindFreeGroup();
58 public: ConstFreeGroupPtrType FindFreeGroup()
const;
61 public:
template <
typename PolicyT,
typename FeaturesT>
62 class Link :
public virtual Feature::Link<PolicyT, FeaturesT>
64 using FreeGroupPtrType = FreeGroupPtr<PolicyT, FeaturesT>;
65 using ConstFreeGroupPtrType = ConstFreeGroupPtr<PolicyT, FeaturesT>;
71 public: FreeGroupPtrType FindFreeGroup();
74 public: ConstFreeGroupPtrType FindFreeGroup()
const;
77 public:
template <
typename PolicyT,
typename FeaturesT>
78 class FreeGroup :
public virtual Entity<PolicyT, FeaturesT>
83 public: LinkPtr<PolicyT, FeaturesT> CanonicalLink();
86 public: ConstLinkPtr<PolicyT, FeaturesT> CanonicalLink()
const;
89 public:
template <
typename PolicyT>
90 class Implementation :
public virtual Feature::Implementation<PolicyT>
92 public:
virtual Identity FindFreeGroupForModel(
93 const Identity &_modelID)
const = 0;
95 public:
virtual Identity FindFreeGroupForLink(
96 const Identity &_linkID)
const = 0;
98 public:
virtual Identity GetFreeGroupCanonicalLink(
99 const Identity &_groupID)
const = 0;
106 FindFreeGroupFeature, FrameSemantics>
108 public:
template <
typename PolicyT,
typename FeaturesT>
122 public:
template <
typename PolicyT,
typename FeaturesT>
128 public:
void SetWorldPose(
const PoseType &_pose);
131 public:
template <
typename PolicyT>
138 const Identity &_groupID,
147 public:
template <
typename PolicyT,
typename FeaturesT>
156 public:
void SetWorldLinearVelocity(
159 public:
void SetWorldAngularVelocity(
163 public:
template <
typename PolicyT>
172 public:
virtual void SetFreeGroupWorldLinearVelocity(
173 const Identity &_groupID,
176 public:
virtual void SetFreeGroupWorldAngularVelocity(
177 const Identity &_groupID,
184 #include <ignition/physics/detail/FreeGroup.hh> typename FromPolicy< PolicyT >::template Use< Pose > PoseType
Definition: FreeGroup.hh:126
If your feature is known to require any other features, then you should have your feature class inher...
Definition: FeatureList.hh:108
Definition: FreeGroup.hh:144
This is the base class of all "proxy objects". The "proxy objects" are essentially interfaces into th...
Definition: Entity.hh:216
Definition: FreeGroup.hh:119
typename FromPolicy< PolicyT >::template Use< Pose > PoseType
Definition: FreeGroup.hh:135
typename FromPolicy< PolicyT >::template Use< AngularVector > AngularVelocity
Definition: FreeGroup.hh:154
This struct is used to conveniently convert from a policy to a geometric type. Example usage: ...
Definition: Geometry.hh:69
Base class for the API of a Frame. This will be inherited by any objects that are able to express Fra...
Definition: FrameSemantics.hh:41
typename FromPolicy< PolicyT >::template Use< AngularVector > AngularVelocity
Definition: FreeGroup.hh:170
This feature provides an interface between the Model and Link classes and the FreeGroup class...
Definition: FreeGroup.hh:104
typename FromPolicy< PolicyT >::template Use< LinearVector > LinearVelocity
Definition: FreeGroup.hh:167
Definition: FreeGroup.hh:132
typename FromPolicy< PolicyT >::template Use< LinearVector > LinearVelocity
Definition: FreeGroup.hh:151
Definition: Feature.hh:92
Definition: FreeGroup.hh:148
Definition: FreeGroup.hh:164
Definition: FreeGroup.hh:123