# Ignition Physics

## API Reference

5.1.0

#include <Link.hh>

## Public Types

using AngularVectorType = typename FromPolicy< PolicyT >::template Use< AngularVector >

using LinearVectorType = typename FromPolicy< PolicyT >::template Use< LinearVector >

using RelativeForceType = typename FromPolicy< PolicyT >::template Use< RelativeForce >

using RelativePositionType = typename FromPolicy< PolicyT >::template Use< RelativePosition >

using RelativeTorqueType = typename FromPolicy< PolicyT >::template Use< RelativeTorque >

Public Types inherited from FrameSemantics::Frame< PolicyT, FeaturesT >
using FrameData = FrameData< typename PolicyT::Scalar, PolicyT::Dim >

Public Types inherited from Entity< PolicyT, FeaturesT >
using Features = FeaturesT

using Pimpl = typename detail::DeterminePlugin< Policy, Features >::type

using Policy = PolicyT

## Public Member Functions

void AddExternalForce (const RelativeForceType &_force, const RelativePositionType &_position)
Add a force on the link applied at a specified position. This force is applied for one simulation step only. More...

void AddExternalForce (const LinearVectorType &_force, const FrameID &_forceInCoordinatesOf=FrameID::World(), const LinearVectorType &_position=LinearVectorType::Zero())
Add a force on the link applied at a specified position. This force is applied for one simulation step only. This is a convenient form of AddExternalForce where the force and position are free vectors and an additional parameter is used to specify the coordinates in which the force is expressed. More...

Add an external torque on the link. The torque is applied for one simulation step only. More...

void AddExternalTorque (const AngularVectorType &_torque, const FrameID &_inCoordinatesOf=FrameID::World())
Add an external torque on the link. The torque is applied for one simulation step only. More...

Public Member Functions inherited from FrameSemantics::Frame< PolicyT, FeaturesT >
virtual ~Frame ()=default
Virtual destructor. More...

FrameData FrameDataRelativeTo (const FrameID &_relativeTo) const
Get the FrameData of this object with respect to another frame. The data will also be expressed in the coordinates of the _relativeTo frame. More...

FrameData FrameDataRelativeTo (const FrameID &_relativeTo, const FrameID &_inCoordinatesOf) const
Get the FrameData of this object relative to another frame, expressed in the coordinates of a third frame. More...

FrameData FrameDataRelativeToWorld () const
Get the FrameData of this object with respect to the world. More...

FrameID GetFrameID () const
Get a FrameID for this object. More...

operator FrameID () const
Implicit conversion to a FrameID is provided. This way, a reference to the Object can be treated as a FrameID. More...

Public Member Functions inherited from Entity< PolicyT, FeaturesT >
virtual ~Entity ()=default
Virtual destructor. More...

std::size_t EntityID () const
Get the unique ID value of this Entity. More...

const std::shared_ptr< void > & EntityReference () const
Get a reference-counting std::shared_ptr to the object inside the implementation that this object provides an abstraction for. More...

const Identity & FullIdentity () const
Get the Identity object of this Entity. More...

Protected Member Functions inherited from Entity< PolicyT, FeaturesT >
Entity (const std::shared_ptr< Pimpl > &_pimpl=nullptr, const Identity &_identity=Identity())
Constructor for the Entity. More...

Entity (std::shared_ptr< Pimpl > &&_pimpl, const Identity &_identity)
Constructor that allows the pimpl to be moved instead of copied. More...

template<typename FeatureT >
FeatureT::template Implementation< PolicyT > * Interface ()
Get a pointer to the implementation of FeatureT. More...

template<typename FeatureT >
const FeatureT::template Implementation< PolicyT > * Interface () const
Same as Interface(), but const-qualified so that const entities can request const-qualified interfaces from the implementation. More...

Protected Attributes inherited from Entity< PolicyT, FeaturesT >
Identity identity
This field contains information to identify the entity. More...

std::shared_ptr< Pimplpimpl
This is a pointer to the physics engine implementation, and it can be used by the object features to find the interfaces that they need in order to function. More...

## ◆ AngularVectorType

 using AngularVectorType = typename FromPolicy::template Use

## ◆ LinearVectorType

 using LinearVectorType = typename FromPolicy::template Use

## ◆ RelativeForceType

 using RelativeForceType = typename FromPolicy::template Use

## ◆ RelativePositionType

 using RelativePositionType = typename FromPolicy::template Use

## ◆ RelativeTorqueType

 using RelativeTorqueType = typename FromPolicy::template Use

## Member Function Documentation

 void AddExternalForce ( const RelativeForceType & _force, const RelativePositionType & _position )

Add a force on the link applied at a specified position. This force is applied for one simulation step only.

Parameters
 [in] _force The desired force as a Relative Force (a quantity that contains information about the coordinates in which it is expressed) [in] _position The point of application of the force. This parameter is a Relative Position (a quantity that contains information about the frame in which it is expressed).

 void AddExternalForce ( const LinearVectorType & _force, const FrameID & _forceInCoordinatesOf = FrameID::World(), const LinearVectorType & _position = LinearVectorType::Zero() )

Add a force on the link applied at a specified position. This force is applied for one simulation step only. This is a convenient form of AddExternalForce where the force and position are free vectors and an additional parameter is used to specify the coordinates in which the force is expressed.

Parameters
 [in] _force The desired force [in] _forceInCoordinatesOf The coordinates in which the force is expressed [in] _position The point of application of the force expressed in the link-fixed frame.

Note that in this version of AddExternalForce the position is expressed in the link-fixed frame while the coordinate frame for the force is a parameter that can be set. If you want to specify the reference frame for the position quantity, please use the AddExternalForce function that takes Relative quantities.

 void AddExternalTorque ( const RelativeTorqueType & _torque )

Add an external torque on the link. The torque is applied for one simulation step only.

Parameters
 [in] _torque The desired torque as a Relative Torque (a quantity that contains information about the coordinates in which it is expressed)

 void AddExternalTorque ( const AngularVectorType & _torque, const FrameID & _inCoordinatesOf = FrameID::World() )