xmsstamper  1.0
xms::XmBathymetryIntersectorImpl Class Reference

Implementaion of XmBathymetryIntersector. More...

Inheritance diagram for xms::XmBathymetryIntersectorImpl:
xms::XmBathymetryIntersector

Public Member Functions

 XmBathymetryIntersectorImpl (BSHP< TrTin > a_tin, BSHP< TrTin > a_stamp)
 
virtual void IntersectCenterLine (XmStamperIo &a_io) override
 Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line. More...
 
virtual void DecomposeCenterLine (XmStamperIo &a_io, std::vector< XmStamperIo > &a_vIo) override
 Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line. More...
 
virtual void IntersectXsects (XmStamper3dPts &a_pts) override
 Intersects cross section points. When a cross section intersects the bathemetry it stops at that location and the rest of the cross section is discarded. More...
 
virtual void IntersectEndCaps (XmStamperIo &a_io, XmStamper3dPts &a_pts) override
 Intersects end cap cross section points. When a cross section intersects the bathemetry it stops at that location and the rest of the cross section is discarded. More...
 
void ClassifyPoints (VecPt3d &a_pts, VecInt &a_ptLocation)
 Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line. More...
 
void CreateIntersector ()
 Creates a multi poly intersector if one does not exist.
 
void Intersect3dPts (VecPt3d &a_pts)
 Intersects a line with a surface. More...
 
void IntersectXsectSide (VecPt3d &a_cl, VecPt3d2d &a_side)
 Intersects left or right side of a cross section with bathymetry. More...
 
void IntersectSlopedAbutment (XmStamperIo &a_io, XmStamper3dPts &a_pts, bool a_first)
 Intersects sloped abutment end cap cross section points. More...
 
void IntersectGuideBank (XmStamperIo &a_io, XmStamper3dPts &a_pts, bool a_first)
 Intersects sloped abutment end cap cross section points. More...
 

Public Attributes

BSHP< TrTinm_tin
 TIN defining Bathemetry surface.
 
BSHP< TrTinm_stamp
 TIN of the stamp.
 
Pt3d m_min
 min x,y,z of stamp
 
Pt3d m_max
 max x,y,z of stamp
 
BSHP< GmMultiPolyIntersectorm_intersect
 polygon intersector for intersecting objects with the bathemetry TIN
 
VecInt m_triIds
 the ids of the triangles in the intersector
 
double m_xyTol
 xy tolerance for geometry comparisons
 

Additional Inherited Members

- Static Public Member Functions inherited from xms::XmBathymetryIntersector
static BSHP< XmBathymetryIntersectorNew (BSHP< TrTin > a_tin, BSHP< TrTin > a_stamp)
 Creates a XmStampInterpCrossSection class. More...
 

Detailed Description

Implementaion of XmBathymetryIntersector.

Intersects bathemetry with feature stamp.

Definition at line 51 of file XmBathymetryIntersector.cpp.

Constructor & Destructor Documentation

◆ XmBathymetryIntersectorImpl()

xms::XmBathymetryIntersectorImpl::XmBathymetryIntersectorImpl ( BSHP< TrTin a_tin,
BSHP< TrTin a_stamp 
)
Parameters
a_tinThe TIN that is intersected with cross sections and the center line of the stamp.
[in]a_stampTIN of the stamp

Definition at line 89 of file XmBathymetryIntersector.cpp.

References m_tin, m_xyTol, Mdist(), xms::Pt3< T >::x, and xms::Pt3< T >::y.

Member Function Documentation

◆ ClassifyPoints()

void xms::XmBathymetryIntersectorImpl::ClassifyPoints ( VecPt3d a_pts,
VecInt a_ptLocation 
)

Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line.

Parameters
[in]a_ptspoint locations
[out]a_ptLocationthe location of the point relative to the TIN 1 (above), 0 (on), -1 (below) OR -2 (outside)

Definition at line 269 of file XmBathymetryIntersector.cpp.

References CreateIntersector(), EQ_TOL(), gmBaryPrepare(), gmCartToBary(), m_intersect, m_tin, m_triIds, xms::Pt3< T >::x, xms::Pt3< T >::y, and xms::Pt3< T >::z.

Referenced by DecomposeCenterLine(), and XmBathymetryIntersectorUnitTests::testClassifyPoints().

◆ DecomposeCenterLine()

void xms::XmBathymetryIntersectorImpl::DecomposeCenterLine ( XmStamperIo a_io,
std::vector< XmStamperIo > &  a_vIo 
)
overridevirtual

Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line.

Parameters
[in]a_ioXmStamperIo class used in the feature stamp operation
[out]a_vIoarray of Io classes that have split up the centerline based on where it intersects the bathemetry and removes sections of the center line based on the type of stamp: cut/fill.

Definition at line 174 of file XmBathymetryIntersector.cpp.

References ClassifyPoints(), xms::XmStamperIo::m_centerLine, xms::XmStamperIo::m_cs, xms::XmStamperIo::m_firstEndCap, xms::XmStamperIo::m_lastEndCap, xms::XmStamperIo::m_stampingType, and m_xyTol.

Referenced by XmBathymetryIntersectorUnitTests::testDescomposeCenterLine().

◆ Intersect3dPts()

void xms::XmBathymetryIntersectorImpl::Intersect3dPts ( VecPt3d a_pts)

Intersects a line with a surface.

Parameters
a_pts???

Definition at line 472 of file XmBathymetryIntersector.cpp.

References gmEqualPointsXY(), gmIntersectTriangleAndLineSegment(), m_intersect, m_tin, m_triIds, m_xyTol, xms::Pt3< T >::x, and xms::Pt3< T >::y.

Referenced by IntersectGuideBank(), and IntersectXsectSide().

◆ IntersectCenterLine()

void xms::XmBathymetryIntersectorImpl::IntersectCenterLine ( XmStamperIo a_io)
overridevirtual

Intersects the center line from a feature stamp operation with the bathemetry. This can potentially create new points along the center line.

Parameters
[in,out]a_ioXmStamperIo class used in the feature stamp operation

Definition at line 114 of file XmBathymetryIntersector.cpp.

References CreateIntersector(), gmEqualPointsXY(), gmIntersectTriangleAndLineSegment(), xms::XmStamperIo::m_centerLine, xms::XmStamperIo::m_cs, m_intersect, m_tin, m_triIds, m_xyTol, xms::Pt3< T >::x, and xms::Pt3< T >::y.

Referenced by XmBathymetryIntersectorUnitTests::testDescomposeCenterLine(), and XmBathymetryIntersectorUnitTests::testIntersectCenterLine().

◆ IntersectEndCaps()

void xms::XmBathymetryIntersectorImpl::IntersectEndCaps ( XmStamperIo a_io,
XmStamper3dPts a_pts 
)
overridevirtual

Intersects end cap cross section points. When a cross section intersects the bathemetry it stops at that location and the rest of the cross section is discarded.

Parameters
[in]a_ioStamper io class
[in,out]a_pts3d points representing the cross sections

Definition at line 330 of file XmBathymetryIntersector.cpp.

References CreateIntersector(), IntersectGuideBank(), IntersectSlopedAbutment(), xms::XmStamperIo::m_cs, xms::XmStamperIo::m_firstEndCap, m_intersect, xms::XmStamperIo::m_lastEndCap, xms::XmStamperEndCap::m_type, and XM_ENSURE_TRUE.

◆ IntersectGuideBank()

void xms::XmBathymetryIntersectorImpl::IntersectGuideBank ( XmStamperIo a_io,
XmStamper3dPts a_pts,
bool  a_first 
)

Intersects sloped abutment end cap cross section points.

Parameters
[in]a_ioXmamper io class
[in,out]a_pts3d points representing the cross sections
[in]a_firstflag indicating if this is the first end cap

Definition at line 559 of file XmBathymetryIntersector.cpp.

References Intersect3dPts(), IntersectXsectSide(), xms::stXs3dPts::m_centerLine, xms::XmStamperIo::m_centerLine, xms::XmStamperIo::m_cs, xms::XmStamper3dPts::m_first_endcap, xms::XmStamper3dPts::m_last_endcap, xms::stXs3dPts::m_left, xms::stXs3dPts::m_right, and xms::XmStamper3dPts::m_xsPts.

Referenced by IntersectEndCaps().

◆ IntersectSlopedAbutment()

void xms::XmBathymetryIntersectorImpl::IntersectSlopedAbutment ( XmStamperIo a_io,
XmStamper3dPts a_pts,
bool  a_first 
)

Intersects sloped abutment end cap cross section points.

Parameters
[in]a_ioStamper io class
[in,out]a_pts3d points representing the cross sections
[in]a_firstflag indicating if this is the first end cap

Definition at line 516 of file XmBathymetryIntersector.cpp.

References IntersectXsectSide(), xms::XmStamperIo::m_centerLine, xms::XmStamperIo::m_cs, xms::XmStamper3dPts::m_first_endcap, xms::XmStamper3dPts::m_last_endcap, xms::stXs3dPts::m_left, xms::stXs3dPts::m_right, and xms::XmStamper3dPts::m_xsPts.

Referenced by IntersectEndCaps().

◆ IntersectXsects()

void xms::XmBathymetryIntersectorImpl::IntersectXsects ( XmStamper3dPts a_pts)
overridevirtual

Intersects cross section points. When a cross section intersects the bathemetry it stops at that location and the rest of the cross section is discarded.

Parameters
[in,out]a_pts3d points representing the cross sections

Definition at line 313 of file XmBathymetryIntersector.cpp.

References CreateIntersector(), IntersectXsectSide(), xms::stXs3dPts::m_centerLine, m_intersect, xms::stXs3dPts::m_left, xms::stXs3dPts::m_right, and xms::XmStamper3dPts::m_xsPts.

Referenced by XmBathymetryIntersectorUnitTests::testIntersectXsects().

◆ IntersectXsectSide()

void xms::XmBathymetryIntersectorImpl::IntersectXsectSide ( VecPt3d a_cl,
VecPt3d2d a_side 
)

Intersects left or right side of a cross section with bathymetry.

Parameters
a_cl???
a_side???

Definition at line 355 of file XmBathymetryIntersector.cpp.

References Intersect3dPts(), and XM_ENSURE_TRUE.

Referenced by IntersectGuideBank(), IntersectSlopedAbutment(), and IntersectXsects().


The documentation for this class was generated from the following file: