void CArea::InsideCurves(const CCurve& curve, std::list<CCurve> &curves_inside)const { //1. find the intersectionpoints between these two curves. std::list<Point> pts; CurveIntersections(curve, pts); //2.seperate curve2 in multiple curves between these intersections. std::list<CCurve> separate_curves; curve.ExtractSeparateCurves(pts, separate_curves); //3. if the midpoint of a seperate curve lies in a1, then we return it. for(std::list<CCurve>::iterator It = separate_curves.begin(); It != separate_curves.end(); It++) { CCurve &curve = *It; double length = curve.Perim(); Point mid_point = curve.PerimToPoint(length * 0.5); if(IsInside(mid_point, *this))curves_inside.push_back(curve); } }