Vec2f Orientation2DF1D::operator()(Interface1D& inter) { FEdge * fe = dynamic_cast<FEdge*>(&inter); if(fe){ Vec3r res = fe->orientation2d(); return Vec2f(res[0], res[1]); } return integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); }
unsigned QuantitativeInvisibilityF1D::operator()(Interface1D& inter) { ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve) return ve->qi(); FEdge *fe = dynamic_cast<FEdge*>(&inter); if(fe) return ve->qi(); return integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); }
void getShapeF1D(Interface1D& inter, set<ViewShape*>& oShapes){ ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve){ oShapes.insert(ve->viewShape()); }else{ Interface0DIterator it=inter.verticesBegin(), itend=inter.verticesEnd(); for(;it!=itend;++it) oShapes.insert(Functions0D::getShapeF0D(it)); } }
vector<ViewShape*> GetShapeF1D::operator()(Interface1D& inter) { vector<ViewShape*> shapesVector; set<ViewShape*> shapesSet; ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve){ shapesVector.push_back(ve->viewShape()); }else{ Interface0DIterator it=inter.verticesBegin(), itend=inter.verticesEnd(); for(;it!=itend;++it) shapesSet.insert(Functions0D::getShapeF0D(it)); shapesVector.insert<set<ViewShape*>::iterator>(shapesVector.begin(), shapesSet.begin(), shapesSet.end()); } return shapesVector; }
vector<ViewShape*> GetOccludersF1D::operator()(Interface1D& inter) { vector<ViewShape*> shapesVector; set<ViewShape*> shapesSet; ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve){ return ve->occluders(); }else{ Interface0DIterator it=inter.verticesBegin(), itend=inter.verticesEnd(); for(;it!=itend;++it){ Functions0D::getOccludersF0D(it, shapesSet); } shapesVector.insert(shapesVector.begin(), shapesSet.begin(), shapesSet.end()); } return shapesVector; }
int QuantitativeInvisibilityF1D::operator()(Interface1D &inter) { ViewEdge *ve = dynamic_cast<ViewEdge *>(&inter); if (ve) { result = ve->qi(); return 0; } FEdge *fe = dynamic_cast<FEdge *>(&inter); if (fe) { result = fe->qi(); return 0; } result = integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); return 0; }
Nature::EdgeNature CurveNatureF1D::operator()(Interface1D& inter) { ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve) return ve->getNature(); else{ // we return a nature that contains every // natures of the viewedges spanned by the chain. Nature::EdgeNature nat = Nature::NO_FEATURE; Interface0DIterator it = inter.verticesBegin(); while(!it.isEnd()){ nat |= _func(it); ++it; } return nat; } }
void getOccludeeF1D(Interface1D& inter, set<ViewShape*>& oShapes){ ViewEdge* ve = dynamic_cast<ViewEdge*>(&inter); if (ve){ ViewShape * aShape = ve->aShape(); if(aShape == 0){ oShapes.insert(0); return; } oShapes.insert(aShape); } else{ Interface0DIterator it=inter.verticesBegin(), itend=inter.verticesEnd(); for(;it!=itend;++it) oShapes.insert(Functions0D::getOccludeeF0D(it)); } }
void getOccludersF1D(Interface1D& inter, set<ViewShape*>& oShapes) { ViewEdge *ve = dynamic_cast<ViewEdge*>(&inter); if (ve) { vector<ViewShape*>& occluders = ve->occluders(); oShapes.insert<vector<ViewShape*>::iterator>(occluders.begin(), occluders.end()); } else { Interface0DIterator it = inter.verticesBegin(), itend = inter.verticesEnd(); for (; it != itend; ++it) { set<ViewShape*> shapes; Functions0D::getOccludersF0D(it, shapes); for (set<ViewShape*>::iterator s = shapes.begin(), send = shapes.end(); s != send; ++s) oShapes.insert(*s); } } }
int GetOccludeeF1D::operator()(Interface1D& inter) { vector<ViewShape*> shapesVector; set<ViewShape*> shapesSet; ViewEdge *ve = dynamic_cast<ViewEdge*>(&inter); if (ve) { ViewShape *aShape = ve->aShape(); if (aShape) { shapesVector.push_back(aShape); } } else { Interface0DIterator it = inter.verticesBegin(), itend = inter.verticesEnd(); for (; it != itend; ++it) { shapesSet.insert(Functions0D::getOccludeeF0D(it)); } shapesVector.insert<set<ViewShape*>::iterator>(shapesVector.begin(), shapesSet.begin(), shapesSet.end()); } result = shapesVector; return 0; }
int ZDiscontinuityF1D::operator()(Interface1D& inter) { result = integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); return 0; }
int Orientation3DF1D::operator()(Interface1D& inter) { result = integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); return 0; }
int GetProjectedZF1D::operator()(Interface1D& inter) { result = integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); return 0; }
real GetProjectedYF1D::operator()(Interface1D& inter) { return integrate(_func, inter.verticesBegin(), inter.verticesEnd(), _integration); }