// general purpose vertex-drop which delegates to this->height(r) of subclass bool MillingCutter::vertexDrop(CLPoint &cl, const Triangle &t) const { bool result = false; BOOST_FOREACH( const Point& p, t.p) { // test each vertex of triangle double q = cl.xyDistance(p); // distance in XY-plane from cl to p if ( q <= radius ) { // p is inside the cutter CCPoint cc_tmp(p, VERTEX); if ( cl.liftZ( p.z - this->height(q), cc_tmp ) ) result = true; } } return result; }
bool CompositeCutter::ccValidRadius(unsigned int n, CLPoint& cl) const { if (cl.cc->type == NONE) return false; double d = cl.xyDistance(*cl.cc); double lolimit; double hilimit; if (n==0) lolimit = - 1E-6; else lolimit = radiusvec[n-1] - 1E-6; hilimit = radiusvec[n]+1e-6; // FIXME: really ugly solution this one... if (d<lolimit) return false; else if (d>hilimit) return false; else return true; }