35 std::vector<Pt3d>&
Pts();
44 const std::vector<size_t>& a_iSeg,
45 const std::vector<size_t>& a_jSeg);
47 std::list<std::vector<size_t>>& a_loops);
50 std::vector<int>& a_loopType);
52 bool PolyInsideOfPoly(
const std::vector<size_t>& a_poly,
const std::vector<size_t>& a_polyToTest);
53 bool PolyInsideOfPoly(
const std::vector<Pt3d>& a_poly,
const std::vector<size_t>& a_polyToTest);
void ClassifyLoopsFromInPolyAndRemoveInvalid(std::list< std::vector< size_t >> &a_loops, std::vector< int > &a_loopType)
Classifies loops extracted from a pave on an INSIDE_POLY and removes invalid loops. There are more rules when dealing with paving outward from polygons. Sometimes paving outward will create a new "outside" polygon that we then pave inward on the next step in the algorithm. See testCase8. You can also generate "inside" polygons that are inside of other "inside" polygons. These are deleted. Again see testCase8.
size_t IdxFromPt3d(const Pt3d &a_pt)
Returns the index of a location by hashing that location with the current list of points...
std::vector< size_t > HashPts()
Hashes the point locations.
bool PolyInsideOfPoly(const std::vector< size_t > &a_poly, const std::vector< size_t > &a_polyToTest)
Returns true if a_polyToTest is inside of a_poly.
void CalcLoopsForCleanPolyOffset(std::list< size_t > &a_sequence, std::list< std::vector< size_t >> &a_loops)
Calculates new loops from a sequence that has intersections included.
std::list< size_t > SequenceWithIntersects(std::vector< size_t > &a_segs)
Returns a new sequence that includes intersection indexes.
Implementation of MePolyPts.
void IntersectSegs(const std::vector< size_t > &a_segs)
Intersects the segments.
std::set< size_t > SetIdx
typedef for shorter declaration
BSHP< impl > m_p
implementation class
void CheckIntersectTwoSegs(size_t a_i, size_t a_j, const std::vector< size_t > &a_iSeg, const std::vector< size_t > &a_jSeg)
Intersects 2 segments.
BSHP< std::vector< Pt3d > > PtsSharedPointer()
Returns the vector of points.
std::vector< Pt3d > & Pts()
Returns the vector of points.
std::vector< size_t > SegmentsForCleanPolyOffset()
Returns the segments that will be used in CleanPolyOffset.
void RemoveBackwardLoopsForCleanPolyOffset(std::list< std::vector< size_t >> &a_loops, int a_pType)
Removes loops that are "backwards" for CleanPolyOffset. "backwards" depends on the type of input (OUT...
double & XyTol()
Returns the tolerance.
Utility class to work with polygon paving.