TVM  0.9.4
tvm::geometry::Plane Class Reference

#include <tvm/geometry/Plane.h>

Inheritance diagram for tvm::geometry::Plane:
Collaboration diagram for tvm::geometry::Plane:

Public Member Functions

 Plane (const Eigen::Vector3d &normal, double offset)
 
 Plane (const Eigen::Vector3d &normal, const Eigen::Vector3d &point)
 
template<typename S , typename EnumO >
void setIntegrator (std::shared_ptr< S > integrator, EnumO oPosition, EnumO oVelocity, EnumO oAcceleration)
 
template<typename S , typename EnumO , typename std::enable_if< std::is_base_of< tvm::graph::abstract::Outputs, S >::value, int >::type = 0>
void setIntegrator (S &integrator, EnumO oPosition, EnumO oVelocity, EnumO oAcceleration)
 
void position (const Eigen::Vector3d &normal, const Eigen::Vector3d &point)
 
void position (const Eigen::Vector3d &normal, double offset)
 
void velocity (const Eigen::Vector3d &nDot, const Eigen::Vector3d &speed)
 
void acceleration (const Eigen::Vector3d &nDotDot, const Eigen::Vector3d &accel)
 
const Eigen::Vector3d & normal () const
 
double offset () const
 
const Eigen::Vector3d & point () const
 
const Eigen::Vector3d & normalDot () const
 
const Eigen::Vector3d & speed () const
 
const Eigen::Vector3d & normalDotDot () const
 
const Eigen::Vector3d & acceleration () const
 
- Public Member Functions inherited from tvm::graph::internal::AbstractNode
template<typename EnumT >
bool isUpdateEnabled (EnumT e) const
 
virtual bool isUpdateStaticallyEnabled (int) const
 
virtual bool isUpdateCustomEnabled (int) const
 
virtual ~AbstractNode ()=default
 
void update (int i)
 
- Public Member Functions inherited from tvm::graph::internal::Inputs
virtual ~Inputs ()=default
 
template<typename T , typename EnumI , typename... Args>
void addInput (std::shared_ptr< T > source, EnumI i, Args... args)
 
template<typename T , typename EnumI , typename... Args, typename std::enable_if< std::is_base_of< abstract::Outputs, T >::value, int >::type = 0>
void addInput (T &source, EnumI i, Args... args)
 
template<typename T >
void removeInput (T *source)
 
template<typename T , typename... Args>
void removeInput (T *source, Args... args)
 
template<typename T >
Iterator getInput (T *source)
 
template<typename T >
Iterator getInput (const std::shared_ptr< T > &source)
 
- Public Member Functions inherited from tvm::graph::abstract::Outputs
virtual ~Outputs ()=default
 
template<typename EnumT >
bool isOutputEnabled (EnumT e) const
 
bool isOutputEnabled (int i) const
 
virtual bool isOutputStaticallyEnabled (int) const
 
virtual bool isOutputCustomEnabled (int) const
 

Additional Inherited Members

- Public Types inherited from tvm::graph::internal::AbstractNode
enum class  Update_
 
using UpdateParent = AbstractNode
 
using UpdateBase = AbstractNode
 
- Public Types inherited from tvm::graph::internal::Inputs
using inputs_t = std::unordered_map< abstract::Outputs *, std::set< int > >
 
using store_t = std::unordered_set< std::shared_ptr< abstract::Outputs > >
 
- Public Types inherited from tvm::graph::abstract::Outputs
enum class  Output_
 
using OutputParent = Outputs
 
using OutputBase = Outputs
 
- Static Public Member Functions inherited from tvm::graph::internal::AbstractNode
static constexpr const char * UpdateName (Update_)
 
template<typename EnumT >
static constexpr bool UpdateStaticallyEnabled (EnumT)
 
- Static Public Member Functions inherited from tvm::graph::abstract::Outputs
static constexpr const char * OutputName (Output_)
 
template<typename EnumT >
static constexpr bool OutputStaticallyEnabled (EnumT)
 
- Static Public Attributes inherited from tvm::graph::internal::AbstractNode
static constexpr unsigned int UpdateSize = 0
 
static constexpr auto UpdateBaseName = "AbstractNode"
 
- Static Public Attributes inherited from tvm::graph::abstract::Outputs
static constexpr unsigned int OutputSize = 0
 
static constexpr auto OutputBaseName = "Outputs"
 
- Protected Types inherited from tvm::graph::internal::AbstractNode
using input_dependency_t = std::map< Outputs *, std::set< int > >
 
- Protected Member Functions inherited from tvm::graph::abstract::Node< Plane >
void registerUpdates (EnumT u, void(U::*fn)(), Args... args)
 
void registerUpdates (EnumT u, void(U::*fn)())
 
void addOutputDependency (EnumO o, EnumU u)
 
void addOutputDependency (std::initializer_list< EnumO > os, EnumU u)
 
void addInternalDependency (EnumU1 uDependent, EnumU2 u)
 
void addInputDependency (EnumU u, std::shared_ptr< S > source, EnumO i, Args... args)
 
void addInputDependency (EnumU u, S &source, EnumO i, Args... args)
 
void addDirectDependency (EnumO o, std::shared_ptr< S > source, EnumI i)
 
void addDirectDependency (EnumO o, S &source, EnumI i)
 
- Protected Attributes inherited from tvm::graph::internal::AbstractNode
std::map< int, std::function< void(AbstractNode &)> > updates_
 
std::map< int, std::vector< int > > outputDependencies_
 
std::map< int, std::vector< int > > internalDependencies_
 
std::map< int, input_dependency_tinputDependencies_
 
std::map< int, std::pair< Outputs *, int > > directDependencies_
 
- Protected Attributes inherited from tvm::graph::abstract::Outputs
bool is_node_ = false
 

Detailed Description

Represents a 2D plane in 3D space

A static plane is represented by the usual (normal, offset) representation. (i.e. normal.dot(x) + offset = 0)

A moving plane is represented by a (normal, point) couple and their derivatives. (i.e. normal.dot(point) = -offset)

This object does not update any of these quantities (exception: when point is changed, offset is changed accordingly), this responsibility belongs to the Plane provider. In other words, this is not a plane integrator.

Outputs:

  • Position: position of the plane, represents (normal, offset, point) quantities
  • Velocity: first derivative of (normal, point)
  • Acceleration: second derivative of (normal, point)

Constructor & Destructor Documentation

◆ Plane() [1/2]

tvm::geometry::Plane::Plane ( const Eigen::Vector3d &  normal,
double  offset 
)

Constructor for a static plane

Parameters
normalNormal of the plane
offsetOffset of the plane

◆ Plane() [2/2]

tvm::geometry::Plane::Plane ( const Eigen::Vector3d &  normal,
const Eigen::Vector3d &  point 
)

Constructor for a moving plane

Parameters
normalNormal of the plane
pointPoint on the plane

Member Function Documentation

◆ acceleration() [1/2]

const Eigen::Vector3d& tvm::geometry::Plane::acceleration ( ) const
inline

Access the point's acceleration

◆ acceleration() [2/2]

void tvm::geometry::Plane::acceleration ( const Eigen::Vector3d &  nDotDot,
const Eigen::Vector3d &  accel 
)

Change the point and normal's acceleration

◆ normal()

const Eigen::Vector3d& tvm::geometry::Plane::normal ( ) const
inline

Access the normal

◆ normalDot()

const Eigen::Vector3d& tvm::geometry::Plane::normalDot ( ) const
inline

Access the normal derivative

◆ normalDotDot()

const Eigen::Vector3d& tvm::geometry::Plane::normalDotDot ( ) const
inline

Access the normal second derivative

◆ offset()

double tvm::geometry::Plane::offset ( ) const
inline

Access the offset

◆ point()

const Eigen::Vector3d& tvm::geometry::Plane::point ( ) const
inline

Access the point

◆ position() [1/2]

void tvm::geometry::Plane::position ( const Eigen::Vector3d &  normal,
const Eigen::Vector3d &  point 
)

Change the plane normal and point

Triggers offset computation

◆ position() [2/2]

void tvm::geometry::Plane::position ( const Eigen::Vector3d &  normal,
double  offset 
)

Change the plane normal and offset

◆ setIntegrator() [1/2]

template<typename S , typename EnumO , typename std::enable_if< std::is_base_of< tvm::graph::abstract::Outputs, S >::value, int >::type = 0>
void tvm::geometry::Plane::setIntegrator ( S &  integrator,
EnumO  oPosition,
EnumO  oVelocity,
EnumO  oAcceleration 
)
inline

Set a direct dependency to the outputs of the integrator

This variant is probably preferable if the integrator creates the plane object

Such an integrator should update the plane in its own update method

◆ setIntegrator() [2/2]

template<typename S , typename EnumO >
void tvm::geometry::Plane::setIntegrator ( std::shared_ptr< S >  integrator,
EnumO  oPosition,
EnumO  oVelocity,
EnumO  oAcceleration 
)
inline

Set a direct dependency to the outputs of the integrator

Such an integrator should update the plane in its own update method

◆ speed()

const Eigen::Vector3d& tvm::geometry::Plane::speed ( ) const
inline

Access the point's speed

◆ velocity()

void tvm::geometry::Plane::velocity ( const Eigen::Vector3d &  nDot,
const Eigen::Vector3d &  speed 
)

Change the point and normal's speeds


The documentation for this class was generated from the following file: