Program Listing for File DirectPositionBasedSolverForStiffRodsInterface.h
↰ Return to documentation for file (PositionBasedDynamics/DirectPositionBasedSolverForStiffRodsInterface.h)
#ifndef DIRECT_POSITION_BASED_SOLVER_FOR_STIFF_RODS_INTERFACE
#define DIRECT_POSITION_BASED_SOLVER_FOR_STIFF_RODS_INTERFACE
#include "Common/Common.h"
namespace PBD{
// Implementation of "Direct Position-Based Solver for Stiff Rods" paper
// (https://animation.rwth-aachen.de/publication/0557/)
//
// Implemented by:
//
// Crispin Deul
// Graduate School CE
// Technische Universität Darmstadt
//
// deul[at] gsc.tu-darmstadt.de
//
class RodSegment
{
public:
virtual bool isDynamic() = 0;
virtual Real Mass() = 0;
virtual const Vector3r & InertiaTensor() = 0;
virtual const Vector3r & Position() = 0;
virtual const Quaternionr & Rotation() = 0;
};
class RodConstraint
{
public:
using Vector6r = Eigen::Matrix<Real, 6, 1, Eigen::DontAlign>;
virtual unsigned int segmentIndex(unsigned int i) = 0;
virtual Eigen::Matrix<Real, 3, 4, Eigen::DontAlign> & getConstraintInfo() = 0;
virtual Real getAverageSegmentLength() = 0;
virtual Vector3r &getRestDarbouxVector() = 0;
virtual Vector3r &getStiffnessCoefficientK() = 0;
virtual Vector3r & getStretchCompliance() = 0;
virtual Vector3r & getBendingAndTorsionCompliance() = 0;
};
}
#endif