Klamp't
0.8.1

Constructs a piecewise polynomial path between a and b such that each point is near the constraint C(x)=0. More...
#include <ConstrainedInterpolator.h>
Public Attributes  
CSpace *  space 
GeodesicSpace *  manifold 
VectorFieldFunction *  constraint 
Config  xmin 
Config  xmax 
if set, uses bounds in the newton solver  
VectorFieldFunction *  inequalities 
if set, uses a nonlinear constraint in the newton solver  
int  maxNewtonIters 
Real  ftol 
Real  xtol 
Real  maxGrowth 
Optimization::NewtonRoot  solver 
Constructs a piecewise polynomial path between a and b such that each point is near the constraint C(x)=0.
Interpolation is accomplished via a cubic bezier curve. This is slightly faster than taking a regular ConstrainedInterpolator and then postsmoothing it via a Bezier curve.
The method uses a recursive bisection technique, where the midpoint of each segment is projected to the constraint, and bisection continues until a given resolution is met. If checkConstraints is true, the feasibility of each projected point is also checked.
The projection uses a NewtonRaphson solver, capped at maxNewtonIters iterations. It ensures that each milestone satisfies C(x[k]) <= ftol, and d(x[k],x[k+1])<=xtol.
maxGrowth defines the maximum extra distance that the path through a projected configuration can add to the total length of the path. That is, when going from x1 to x2, the projected midpoint xm is checked so that d(x1,xm), d(xm,x2) <= (1+maxGrowth)/2 d(x1,x2). To ensure convergence this parameter should be < 1 (default 0.9).