Class DirectPositionBasedSolverForStiffRodsConstraint

Inheritance Relationships

Base Type

Class Documentation

class DirectPositionBasedSolverForStiffRodsConstraint : public PBD::Constraint

Public Functions

inline DirectPositionBasedSolverForStiffRodsConstraint()
~DirectPositionBasedSolverForStiffRodsConstraint()
inline virtual int &getTypeId() const
bool initConstraint(SimulationModel &model, const std::vector<std::pair<unsigned int, unsigned int>> &constraintSegmentIndices, const std::vector<Vector3r> &constraintPositions, const std::vector<Real> &averageRadii, const std::vector<Real> &averageSegmentLengths, const std::vector<Real> &youngsModuli, const std::vector<Real> &torsionModuli)
virtual bool initConstraintBeforeProjection(SimulationModel &model)
virtual bool updateConstraint(SimulationModel &model)
virtual bool solvePositionConstraint(SimulationModel &model, const unsigned int iter)

Public Static Attributes

static int TYPE_ID = IDFactory::getId()

Protected Functions

void deleteNodes()

Protected Attributes

Node *root

root node

Interval *intervals

intervals of constraints

int numberOfIntervals

number of intervals

std::list<Node*> *forward

list to process nodes with increasing row index in the system matrix H (from the leaves to the root)

std::list<Node*> *backward

list to process nodes starting with the highest row index to row index zero in the matrix H (from the root to the leaves)

std::vector<RodConstraintImpl> m_Constraints
std::vector<RodConstraint*> m_rodConstraints
std::vector<RodSegmentImpl> m_Segments
std::vector<RodSegment*> m_rodSegments
std::vector<Vector6r> m_rightHandSide
std::vector<Vector6r> m_lambdaSums
std::vector<std::vector<Matrix3r>> m_bendingAndTorsionJacobians
std::vector<Vector3r> m_corr_x
std::vector<Quaternionr> m_corr_q