xmsstamper  1.0
xms::XmSlopedAbutmentUtilImpl Class Reference

Implementaion of stSlopedAbutment. More...

Inheritance diagram for xms::XmSlopedAbutmentUtilImpl:
xms::XmSlopedAbutmentUtil

Public Member Functions

virtual void DoConvertTo3d (bool a_first, XmStamperIo &a_io, XmStamper3dPts &a_3dpts) override
 Converts an end cap to 3d pts defining the geometry. More...
 
virtual void GetEndCapEndPoints (cs3dPtIdx &a_ptIdx, VecInt &a_firstEndCapEndPts, VecInt &a_lastEndCapEndPts, XmStamperIo &a_io) override
 creates a breakline representing the outer polygon of the stamp More...
 
virtual void GetEndCapBreakLines (XmStamperIo &a_io, cs3dPtIdx &a_ptIdx, VecInt &a_blTypes) override
 breaklines from the end cap More...
 
bool Setup ()
 Sets up variables to perform the conversion. More...
 
bool SlopedAbutmentTo2dCrossSection ()
 Sets up variables to perform the conversion. More...
 
void EndCapCrossSectionShouldersTo2dCrossSection ()
 Makes 2d cross sections from the end cap cross section but only includes the points from the shoulder out to the end of the cross section.
 
void ComputeTransitionAngles ()
 Sets up variables to perform the conversion.
 
void InterpolateCrossSections (int a_side)
 Interpolates cross sections to define the transition between the sloped abutment and the end cap cross section from the shoulder out to the end of the cross section. More...
 
void ConvertTo3d (int a_side)
 Converts interpolated cross sections to 3d. More...
 
void EnsureCrossSectionAtMaxX (XmStampCrossSection &a_xs)
 Makes sure the cross section goes to the maxX value. More...
 

Public Attributes

bool m_first
 flag indicating if this is from the first end of the stamp
 
XmStamperIom_io
 io class that has the stamping inputs
 
XmStamper3dPtsm_3dpts
 class that holds the 3d points from the stamp coversion
 
XmStamperEndCap m_cap
 copy of the end cap
 
XmSlopedAbutment m_sa
 copy of the sloped abutment
 
XmStampCrossSection m_cs
 
XmStampCrossSection m_csLeft
 
XmStampCrossSection m_csRight
 
Pt3d m_pt1
 the first of 2 points defining the direction of the center line at this end cap
 
Pt3d m_pt2
 the second of 2 points defining the direction of the center line at this end cap
 
XmStampCrossSection m_saXsect
 a 2d cross section built from the sloped abutment info
 
double m_angleCenterLine = 0.0
 the direction of the center line at the end cap;
 
double m_angleLeftTransition = 0.0
 
double m_angleLeftIncrement = 0.0
 
int m_nDivLeft = 0
 
double m_angleRightTransition = 0.0
 
double m_angleRightIncrement = 0.0
 
int m_nDivRight = 0
 
std::vector< XmStampCrossSectionm_interpLeft
 interpolated cross sections for the left side transition
 
VecDbl m_interpAnglesLeft
 
std::vector< XmStampCrossSectionm_interpRight
 interpolated cross sections for the right side transition
 
VecDbl m_interpAnglesRight
 angles for the interpolated left cross sections
 
Pt3d m_leftShoulder3d
 location of the left shoulder in 3d
 
Pt3d m_rightShoulder3d
 location of the right shoulder in 3d
 

Additional Inherited Members

- Static Public Member Functions inherited from xms::XmSlopedAbutmentUtil
static BSHP< XmSlopedAbutmentUtilNew ()
 Creates a XmSlopedAbutmentUtil class. More...
 

Detailed Description

Implementaion of stSlopedAbutment.

Converts a sloped abutment to 3d points for feature stamping.

Definition at line 45 of file XmSlopedAbutmentUtil.cpp.

Member Function Documentation

◆ ConvertTo3d()

◆ DoConvertTo3d()

void xms::XmSlopedAbutmentUtilImpl::DoConvertTo3d ( bool  a_first,
XmStamperIo a_io,
XmStamper3dPts a_3dpts 
)
overridevirtual

Converts an end cap to 3d pts defining the geometry.

Parameters
[in]a_first- flag indicating if this is the first end cap (otherwise it is the last endcap)
[in]a_io- stamper io class
[out]a_3dpts- points filled in by the method

Definition at line 141 of file XmSlopedAbutmentUtil.cpp.

References ConvertTo3d(), InterpolateCrossSections(), m_3dpts, m_cap, xms::XmStamperIo::m_centerLine, m_first, xms::XmStamperIo::m_firstEndCap, m_io, xms::XmStamperIo::m_lastEndCap, xms::stXs3dPts::m_left, xms::XmSlopedAbutment::m_maxX, xms::stXs3dPts::m_right, m_sa, xms::XmSlopedAbutment::m_slope, xms::XmStamperEndCap::m_slopedAbutment, xms::XmStamperEndCap::m_type, xms::XmStamper3dPts::m_xsPts, Setup(), and XM_ENSURE_TRUE.

◆ EnsureCrossSectionAtMaxX()

void xms::XmSlopedAbutmentUtilImpl::EnsureCrossSectionAtMaxX ( XmStampCrossSection a_xs)

Makes sure the cross section goes to the maxX value.

Parameters
[in,out]a_xsCross section

Definition at line 404 of file XmSlopedAbutmentUtil.cpp.

References xms::XmUtil::EnsureVectorAtMaxX(), xms::XmStampCrossSection::m_left, xms::XmStampCrossSection::m_leftMax, xms::XmStampCrossSection::m_right, and xms::XmStampCrossSection::m_rightMax.

Referenced by InterpolateCrossSections().

◆ GetEndCapBreakLines()

void xms::XmSlopedAbutmentUtilImpl::GetEndCapBreakLines ( XmStamperIo a_io,
cs3dPtIdx a_ptIdx,
VecInt a_blTypes 
)
overridevirtual

breaklines from the end cap

Parameters
[in,out]a_ioStamperIo class
[in]a_ptIdxThe indexes of the points in the TIN created by stamping
[out]a_blTypesThe type of break line (center, xsect, shoulder)

Definition at line 474 of file XmSlopedAbutmentUtil.cpp.

References GetEndCapEndPoints(), xms::XmStamperIo::m_cs, xms::cs3dPtIdx::m_first_end_cap, xms::XmStamperIo::m_firstEndCap, xms::cs3dPtIdx::m_last_end_cap, xms::XmStamperIo::m_lastEndCap, xms::csPtIdx::m_left, xms::XmStamperIo::m_outBreakLines, xms::csPtIdx::m_right, xms::XmStamperEndCap::m_type, and xms::cs3dPtIdx::m_xsPts.

◆ GetEndCapEndPoints()

void xms::XmSlopedAbutmentUtilImpl::GetEndCapEndPoints ( cs3dPtIdx a_ptIdx,
VecInt a_firstEndCapEndPts,
VecInt a_lastEndCapEndPts,
XmStamperIo a_io 
)
overridevirtual

creates a breakline representing the outer polygon of the stamp

Parameters
[in]a_ptIdxThe indexes of the points in the TIN
[out]a_firstEndCapEndPtsfirst end cap ending points
[out]a_lastEndCapEndPtslast end cap ending points
[in,out]a_ioStamperIo class

Definition at line 416 of file XmSlopedAbutmentUtil.cpp.

References xms::cs3dPtIdx::m_first_end_cap, xms::XmStamperIo::m_firstEndCap, xms::cs3dPtIdx::m_last_end_cap, xms::XmStamperIo::m_lastEndCap, xms::csPtIdx::m_left, xms::csPtIdx::m_right, and xms::XmStamperEndCap::m_type.

Referenced by GetEndCapBreakLines().

◆ InterpolateCrossSections()

void xms::XmSlopedAbutmentUtilImpl::InterpolateCrossSections ( int  a_side)

Interpolates cross sections to define the transition between the sloped abutment and the end cap cross section from the shoulder out to the end of the cross section.

Parameters
[in]a_sideIndicates the left or right side (SA_LEFT, SA_RIGHT)

Definition at line 312 of file XmSlopedAbutmentUtil.cpp.

References EnsureCrossSectionAtMaxX(), m_angleCenterLine, m_angleLeftIncrement, m_angleRightIncrement, m_csLeft, m_csRight, m_first, m_interpAnglesLeft, m_interpAnglesRight, m_interpLeft, m_interpRight, xms::XmStampCrossSection::m_leftMax, m_nDivLeft, m_nDivRight, xms::XmStampCrossSection::m_rightMax, m_saXsect, xms::XmStampInterpCrossSection::New(), and xms::XmUtil::ScaleCrossSectionXvals().

Referenced by DoConvertTo3d().

◆ Setup()

◆ SlopedAbutmentTo2dCrossSection()

Member Data Documentation

◆ m_angleLeftIncrement

double xms::XmSlopedAbutmentUtilImpl::m_angleLeftIncrement = 0.0

incremental angle to transition between sloped abutment and the left side of the cross section at the end cap. The target increment in 15 degrees.

Definition at line 96 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles(), and InterpolateCrossSections().

◆ m_angleLeftTransition

double xms::XmSlopedAbutmentUtilImpl::m_angleLeftTransition = 0.0

transition angle between the sloped abutment and the left side of the cross section at the end cap

Definition at line 93 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles().

◆ m_angleRightIncrement

double xms::XmSlopedAbutmentUtilImpl::m_angleRightIncrement = 0.0

incremental angle to transition between sloped abutment and the left side of the cross section at the end cap. The target increment in 15 degrees.

Definition at line 103 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles(), and InterpolateCrossSections().

◆ m_angleRightTransition

double xms::XmSlopedAbutmentUtilImpl::m_angleRightTransition = 0.0

transition angle between the sloped abutment and the right side of the cross section at the end cap

Definition at line 100 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles().

◆ m_cs

XmStampCrossSection xms::XmSlopedAbutmentUtilImpl::m_cs

copy of the cross section at the end cap

Definition at line 76 of file XmSlopedAbutmentUtil.cpp.

Referenced by EndCapCrossSectionShouldersTo2dCrossSection(), and Setup().

◆ m_csLeft

XmStampCrossSection xms::XmSlopedAbutmentUtilImpl::m_csLeft

cross section made from m_cs but only includes points from the left shoulder out to the end of the left side

Definition at line 79 of file XmSlopedAbutmentUtil.cpp.

Referenced by EndCapCrossSectionShouldersTo2dCrossSection(), and InterpolateCrossSections().

◆ m_csRight

XmStampCrossSection xms::XmSlopedAbutmentUtilImpl::m_csRight

cross section made from m_cs but only includes points from the right shoulder out to the end of the left side

Definition at line 82 of file XmSlopedAbutmentUtil.cpp.

Referenced by EndCapCrossSectionShouldersTo2dCrossSection(), and InterpolateCrossSections().

◆ m_interpAnglesLeft

VecDbl xms::XmSlopedAbutmentUtilImpl::m_interpAnglesLeft

angles for the interpolated left cross sections

Definition at line 107 of file XmSlopedAbutmentUtil.cpp.

Referenced by ConvertTo3d(), and InterpolateCrossSections().

◆ m_nDivLeft

int xms::XmSlopedAbutmentUtilImpl::m_nDivLeft = 0

number of divisions for left side transition

Definition at line 97 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles(), and InterpolateCrossSections().

◆ m_nDivRight

int xms::XmSlopedAbutmentUtilImpl::m_nDivRight = 0

number of divisions for right side transition

Definition at line 104 of file XmSlopedAbutmentUtil.cpp.

Referenced by ComputeTransitionAngles(), and InterpolateCrossSections().


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