shapeworks::Constraint
#include <Constraint.h>
Inherited by shapeworks::FreeFormConstraint, shapeworks::PlaneConstraint
Public Functions
Name | |
---|---|
bool | isViolated(const vnl_vector< double > & pt) const Returns if pt in vnl_vector format is violated by the constraint. |
virtual bool | isViolated(const Eigen::Vector3d & pt) const =0 Returns if pt in Eigen format is violated by the constraint. |
virtual void | print() const =0 Prints the constraint neatly. |
void | setMus(std::vector< double > inmu) Initializes mu. |
std::vector< double > | getMus() Gets mu. |
virtual Eigen::Vector3d | constraintGradient(const Eigen::Vector3d & pt) const =0 Returns the gradient of the constraint. |
virtual double | constraintEval(const Eigen::Vector3d & pt) const =0 Returns the evaluation on the constraint, i.e. the signed distance to the constraint boundary. |
void | updateMu(const Eigen::Vector3d & pt, double C, size_t index) Updates the value of mu according to the augmented lagrangian update. |
Eigen::Vector3d | lagragianGradient(const Eigen::Vector3d & pt, double C, size_t index) const Computes the lagrangian gradient based on lagrangian inequality equations. NOTE: Not actually lagrangian. We are using quadratic penalty and not lagrangian because it works better. |
Protected Functions
Name | |
---|---|
int | sgn(double val) Returns the sign of the double. |
Protected Attributes
Name | |
---|---|
std::vector< double > | mus_ Mu is the lagrangian momentum term. |
Detailed Description
class shapeworks::Constraint;
This class is the general constraint class. Each instance represents a single constraint, either cutting-plane, sphere or free-form. They all inherit from this class. This class containts all the infrastructure to handle gradients and evaluations, which is shared among all constraint types. NOTE: Not actually using the augmented lagrangian. We are using quadratic penalty and not lagrangian because it works better.
Public Functions Documentation
function isViolated
inline bool isViolated(
const vnl_vector< double > & pt
) const
Returns if pt in vnl_vector format is violated by the constraint.
function isViolated
virtual bool isViolated(
const Eigen::Vector3d & pt
) const =0
Returns if pt in Eigen format is violated by the constraint.
Reimplemented by: shapeworks::FreeFormConstraint::isViolated, shapeworks::PlaneConstraint::isViolated
function print
virtual void print() const =0
Prints the constraint neatly.
Reimplemented by: shapeworks::FreeFormConstraint::print, shapeworks::PlaneConstraint::print
function setMus
inline void setMus(
std::vector< double > inmu
)
Initializes mu.
function getMus
inline std::vector< double > getMus()
Gets mu.
function constraintGradient
virtual Eigen::Vector3d constraintGradient(
const Eigen::Vector3d & pt
) const =0
Returns the gradient of the constraint.
Reimplemented by: shapeworks::FreeFormConstraint::constraintGradient, shapeworks::PlaneConstraint::constraintGradient
function constraintEval
virtual double constraintEval(
const Eigen::Vector3d & pt
) const =0
Returns the evaluation on the constraint, i.e. the signed distance to the constraint boundary.
Reimplemented by: shapeworks::FreeFormConstraint::constraintEval, shapeworks::PlaneConstraint::constraintEval
function updateMu
void updateMu(
const Eigen::Vector3d & pt,
double C,
size_t index
)
Updates the value of mu according to the augmented lagrangian update.
function lagragianGradient
Eigen::Vector3d lagragianGradient(
const Eigen::Vector3d & pt,
double C,
size_t index
) const
Computes the lagrangian gradient based on lagrangian inequality equations. NOTE: Not actually lagrangian. We are using quadratic penalty and not lagrangian because it works better.
Protected Functions Documentation
function sgn
inline int sgn(
double val
)
Returns the sign of the double.
Protected Attributes Documentation
variable mus_
std::vector< double > mus_;
Mu is the lagrangian momentum term.
Updated on 2024-03-17 at 12:58:44 -0600