Class ConstraintNode#

Inheritance Relationships#

Base Type#

Class Documentation#

class ConstraintNode : public Karana::Dynamics::Node#

This class is used by LoopConstraintBase loop constraints as attachment body nodes.

ConstraintNodes are always force nodes, but do not allow the accumulation of forces. The node constraint forces are computed automatically by dynamics algorithms such as Karana::Dynamics::Algorithms::evalTAForwardDynamics(). See the

Hinge loop-constraints section for more on constraint nodes.

Public Functions

inline ConstraintNode(const std::string &name, kc::ks_ptr<PhysicalBody> bd)#
inline virtual const std::string &typeString() const noexcept override#

Get the type string of the frame.

Returns:

The type string.

Public Static Functions

static kc::ks_ptr<ConstraintNode> lookupOrCreate(kc::ks_ptr<PhysicalBody> bd, const std::string &name)#

Protected Functions

virtual void detach() override#

detach the node from the current parent body, and put in the pool of detached nodes for possible reuse

inline virtual void accumExternalSpForce(const km::SpatialVector&, const kc::ks_ptr<kf::Frame>& = nullptr) override#

Make this method protected since it is not meant to be called for constraint nodes

inline virtual void setExternalSpForce(const km::SpatialVector &spforce, const kc::ks_ptr<kf::Frame>& = nullptr) override#

Make this method protected since the constraint forces at the nodes are computed algorithmically by methods such as Karana::Dynamics::Algorithms::evalTAForwardDynamics()

void _discard(kc::ks_ptr<kc::Base> &base) override#

Discard a constriant node.

Parameters:

base – - A base pointer to the constraint node to discard.