| 
    xmsmesh
    1.0
    
   | 
 
Offsets a polyline (in or out). The polyline forms a closed loop. More...
  
 Public Member Functions | |
| MePolyOffsetterImpl () | |
| constructor  | |
| virtual bool | Offset (const std::vector< Pt3d > &a_input, MePolyOffsetter::polytype a_pType, MePolyOffsetterOutput &a_output, double a_xyTol) override | 
| Takes an input polyline and offsets it based on the distance of the segments that make up the polyline.  More... | |
| bool | Offset (const std::vector< Pt3d > &a_input, MePolyOffsetter::polytype a_pType, std::vector< std::vector< Pt3d >> &a_output, std::vector< MePolyOffsetter::polytype > &a_outPolyType) | 
| Takes an input polyline and offsets it based on the distance of the segments that make up the polyline.  More... | |
| bool | DoOffset (const std::vector< Pt3d > &a_input) | 
| buffers the polygon  More... | |
| void | CheckToAddPoint (std::vector< Pt3d > &a_result, const Pt3d &a_pt) | 
| checks to see if a point can be added to the resulting line  More... | |
| void | ProcessAngleSegmentEnd (int npt_end, double ang_end, int in1, int in2, int in3, double dx1, double dy1, const Pt3d *pts, std::vector< Pt3d > &a_result) | 
| handles inserting points around the end of a segment.  More... | |
| void | SpecialRejection (const std::vector< Pt3d > &a_input, std::vector< Pt3d > &a_output) | 
| a special case for removing points.  More... | |
| void | SelfIntersection (std::vector< Pt3d > &a_pLine) | 
| Self intersection of a polyline.  More... | |
| void | FindDuplicatesAndOrderLoops (const std::vector< Pt3d > &a_input) | 
| Finds duplicate points and orders the loops.  More... | |
Public Attributes | |
| double | m_xyTol | 
| tolerance for geometric comparisons  | |
| bool | m_setOffsetToZero | 
| flag used in testing  | |
| BSHP< MePolyCleaner > | m_intersector | 
| class to clean the offset from the polygon  | |
| MePolyOffsetter::polytype | m_pType | 
| the type of polygon being offset  | |
| MePolyOffsetterOutput | m_output | 
| the new polygons created by this class  | |
Additional Inherited Members | |
  Public Types inherited from xms::MePolyOffsetter | |
| enum | polytype { OUTSIDE_POLY = 0, INSIDE_POLY, NEWOUT_POLY } | 
| enum to identify types of polygons created by this class  | |
  Static Public Member Functions inherited from xms::MePolyOffsetter | |
| static BSHP< MePolyOffsetter > | New () | 
| Creates a BufferPoly class.  More... | |
Offsets a polyline (in or out). The polyline forms a closed loop.
Definition at line 40 of file MePolyOffsetter.cpp.
| void xms::MePolyOffsetterImpl::CheckToAddPoint | ( | std::vector< Pt3d > & | a_result, | 
| const Pt3d & | a_pt | ||
| ) | 
checks to see if a point can be added to the resulting line
| a_result | ??? | 
| a_pt | The point. | 
Definition at line 262 of file MePolyOffsetter.cpp.
Referenced by DoOffset(), and ProcessAngleSegmentEnd().
| bool xms::MePolyOffsetterImpl::DoOffset | ( | const std::vector< Pt3d > & | a_input | ) | 
buffers the polygon
| [in] | a_input | ??? | 
Definition at line 185 of file MePolyOffsetter.cpp.
References CheckToAddPoint(), EQ_TOL(), FindDuplicatesAndOrderLoops(), FOURPIOVER3, gmAngleBetween2DVectors(), gmEqualPointsXY(), m_xyTol, PIOVER6, ProcessAngleSegmentEnd(), SelfIntersection(), SEVENPIOVER3, SIN60, SpecialRejection(), TWOPI, xms::Pt3< T >::x, xms::Pt3< T >::y, and xms::Pt3< T >::z.
Referenced by Offset().
| void xms::MePolyOffsetterImpl::FindDuplicatesAndOrderLoops | ( | const std::vector< Pt3d > & | a_input | ) | 
Finds duplicate points and orders the loops.
| [in] | a_input | Vector of point locations | 
Definition at line 413 of file MePolyOffsetter.cpp.
References xms::MePolyOffsetterOutput::m_loops, m_output, and xms::MePolyOffsetterOutput::m_pts.
Referenced by DoOffset().
      
  | 
  overridevirtual | 
Takes an input polyline and offsets it based on the distance of the segments that make up the polyline.
| a_input | The input polyline. | 
| a_pType | The type of polygon: outside polygon or inside polygon | 
| a_out | The offset of the input polyline. This can be multiple polylines | 
| a_xyTol | Tolerance for x,y plane for coincident points. | 
Definition at line 125 of file MePolyOffsetter.cpp.
References DoOffset(), m_output, m_pType, and m_xyTol.
Referenced by MePolyOffsetterUnitTests::testBox0(), MePolyOffsetterUnitTests::testBox1(), MePolyOffsetterUnitTests::testBox1a(), MePolyOffsetterUnitTests::testCase1(), MePolyOffsetterUnitTests::testCase1a(), and MePolyOffsetterUnitTests::testCase1b().
| bool xms::MePolyOffsetterImpl::Offset | ( | const std::vector< Pt3d > & | a_input, | 
| MePolyOffsetter::polytype | a_pType, | ||
| std::vector< std::vector< Pt3d >> & | a_output, | ||
| std::vector< MePolyOffsetter::polytype > & | a_outPolyType | ||
| ) | 
Takes an input polyline and offsets it based on the distance of the segments that make up the polyline.
| a_input | The input polyline. | 
| a_pType | The type of polygon: outside polygon or inside polygon | 
| a_output | The offset of the input polyline. This can be multiple polylines | 
| a_outPolyType | The type of polygon in a_output it is either: OUTSIDE_POLY or INSIDE_POLY | 
Definition at line 149 of file MePolyOffsetter.cpp.
References DoOffset(), xms::MePolyOffsetterOutput::m_loops, xms::MePolyOffsetterOutput::m_loopTypes, m_output, xms::MePolyOffsetterOutput::m_pts, and m_pType.
| void xms::MePolyOffsetterImpl::ProcessAngleSegmentEnd | ( | int | npt_end, | 
| double | ang_end, | ||
| int | in1, | ||
| int | in2, | ||
| int | in3, | ||
| double | dx1, | ||
| double | dy1, | ||
| const Pt3d * | pts, | ||
| std::vector< Pt3d > & | a_result | ||
| ) | 
handles inserting points around the end of a segment.
| [in] | npt_end | ??? | 
| [in] | ang_end | ??? | 
| [in] | in1 | ??? | 
| [in] | in2 | ??? | 
| [in] | in3 | ??? | 
| [in] | dx1 | ??? | 
| [in] | dy1 | ??? | 
| [in] | pts | ??? | 
| [in] | a_result | ??? | 
Definition at line 278 of file MePolyOffsetter.cpp.
References CheckToAddPoint(), Mdist(), PIOVER3, PIOVER6, SIN60, TWOPIOVER3, xms::Pt3< T >::x, xms::Pt3< T >::y, and xms::Pt3< T >::z.
Referenced by DoOffset().
| void xms::MePolyOffsetterImpl::SelfIntersection | ( | std::vector< Pt3d > & | a_pLine | ) | 
Self intersection of a polyline.
| a_pLine | The polyline. | 
Definition at line 405 of file MePolyOffsetter.cpp.
References m_intersector, m_output, m_pType, and m_xyTol.
Referenced by DoOffset().
| void xms::MePolyOffsetterImpl::SpecialRejection | ( | const std::vector< Pt3d > & | a_input, | 
| std::vector< Pt3d > & | a_out | ||
| ) | 
a special case for removing points.
| [in] | a_input | ??? | 
| a_out | ??? | 
Definition at line 377 of file MePolyOffsetter.cpp.
References gmPointInTriangleWithTol(), and m_xyTol.
Referenced by DoOffset().