ShapeOp
0.1.0
|
Edge strain constraint. Constrains the distance between two points to a range. See [2] for more details. More...
#include <Constraint.h>
Public Member Functions | |
EdgeStrainConstraint (const std::vector< int > &idI, Scalar weight, const Matrix3X &positions, Scalar rangeMin=1.0, Scalar rangeMax=1.0) | |
Constraint constructor. The target length is set to the distance of the two vertices in the parameter positions. The parameters rangeMin and rangeMax can be used to specify a target range for the distance (equivalent to edge length) [rangeMin*distance,rangeMax*distance]. More... | |
virtual void | project (const Matrix3X &positions, Matrix3X &projections) const overridefinal |
Find the closest configuration from the input positions that satisfy the constraint. | |
virtual void | addConstraint (std::vector< Triplet > &triplets, int &idO) const overridefinal |
Add the constraint to the linear system. | |
void | setEdgeLength (Scalar length) |
Set a new edge length. | |
void | setRangeMin (Scalar rMin) |
Set a new range minimum. | |
void | setRangeMax (Scalar rMax) |
Set a new range maximum. | |
Public Member Functions inherited from ShapeOp::Constraint | |
Constraint (const std::vector< int > &idI, Scalar weight) | |
Constraint constructor. More... | |
std::size_t | nIndices () const |
Number of indices of vertices involved in the constraint. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ShapeOp::Constraint | |
static std::shared_ptr< Constraint > | shapeConstraintFactory (const std::string &ConstraintType, const std::vector< int > &idI, Scalar weight, const Matrix3X &positions) |
Creates a constraint from a string type, a number of indices, a weight and the initial point positions. More... | |
Protected Attributes inherited from ShapeOp::Constraint | |
std::vector< int > | idI_ |
ids of the vertices involved in this constraint. | |
Scalar | weight_ |
weight for the constraint. | |
int | idO_ |
location of this constraint in the linear system. | |
Edge strain constraint. Constrains the distance between two points to a range. See [2] for more details.
SHAPEOP_INLINE ShapeOp::EdgeStrainConstraint::EdgeStrainConstraint | ( | const std::vector< int > & | idI, |
Scalar | weight, | ||
const Matrix3X & | positions, | ||
Scalar | rangeMin = 1.0 , |
||
Scalar | rangeMax = 1.0 |
||
) |
Constraint constructor. The target length is set to the distance of the two vertices in the parameter positions. The parameters rangeMin and rangeMax can be used to specify a target range for the distance (equivalent to edge length) [rangeMin*distance,rangeMax*distance].
idI | are two indices of the vertices of the edge. |
weight | The weight of the constraint to be added relative to the other constraints. |
positions | The positions of all the n vertices stacked in a 3 by n matrix. |
rangeMin | The factor to determine the minimal distance from the target length: rangeMin*distance |
rangeMax | The factor to determine the maximal distance from the target length: rangeMax*distance |