GCS: Extension of ConstraintEqual to allow for a proportionality factor
This commit is contained in:
@@ -97,8 +97,9 @@ int Constraint::findParamInPvec(double *param)
|
||||
}
|
||||
|
||||
// Equal
|
||||
ConstraintEqual::ConstraintEqual(double *p1, double *p2)
|
||||
ConstraintEqual::ConstraintEqual(double *p1, double *p2, double p1p2ratio)
|
||||
{
|
||||
ratio = p1p2ratio;
|
||||
pvec.push_back(p1);
|
||||
pvec.push_back(p2);
|
||||
origpvec = pvec;
|
||||
@@ -117,7 +118,7 @@ void ConstraintEqual::rescale(double coef)
|
||||
|
||||
double ConstraintEqual::error()
|
||||
{
|
||||
return scale * (*param1() - *param2());
|
||||
return scale * (*param1() - ratio *(*param2()));
|
||||
}
|
||||
|
||||
double ConstraintEqual::grad(double *param)
|
||||
|
||||
@@ -131,10 +131,11 @@ namespace GCS
|
||||
class ConstraintEqual : public Constraint
|
||||
{
|
||||
private:
|
||||
double ratio;
|
||||
inline double* param1() { return pvec[0]; }
|
||||
inline double* param2() { return pvec[1]; }
|
||||
public:
|
||||
ConstraintEqual(double *p1, double *p2);
|
||||
ConstraintEqual(double *p1, double *p2, double p1p2ratio=1.0);
|
||||
virtual ConstraintType getTypeId();
|
||||
virtual void rescale(double coef=1.);
|
||||
virtual double error();
|
||||
|
||||
Reference in New Issue
Block a user