xmsstamper
1.0
|
Implementaion of stSlopedAbutment. More...
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 | |
XmStamperIo * | m_io |
io class that has the stamping inputs | |
XmStamper3dPts * | m_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< XmStampCrossSection > | m_interpLeft |
interpolated cross sections for the left side transition | |
VecDbl | m_interpAnglesLeft |
std::vector< XmStampCrossSection > | m_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< XmSlopedAbutmentUtil > | New () |
Creates a XmSlopedAbutmentUtil class. More... | |
Implementaion of stSlopedAbutment.
Converts a sloped abutment to 3d points for feature stamping.
Definition at line 45 of file XmSlopedAbutmentUtil.cpp.
void xms::XmSlopedAbutmentUtilImpl::ConvertTo3d | ( | int | a_side | ) |
Converts interpolated cross sections to 3d.
[in] | a_side | Indicates the left or right side (SA_LEFT, SA_RIGHT) |
Definition at line 362 of file XmSlopedAbutmentUtil.cpp.
References xms::XmUtil::ConvertXsPointsTo3d(), m_3dpts, m_first, xms::XmStamper3dPts::m_first_endcap, m_interpAnglesLeft, m_interpAnglesRight, m_interpLeft, m_interpRight, xms::XmStamper3dPts::m_last_endcap, xms::stXs3dPts::m_left, xms::XmStampCrossSection::m_left, xms::XmStampCrossSection::m_leftMax, m_leftShoulder3d, xms::stXs3dPts::m_right, xms::XmStampCrossSection::m_right, xms::XmStampCrossSection::m_rightMax, m_rightShoulder3d, and XM_PI.
Referenced by DoConvertTo3d().
|
overridevirtual |
Converts an end cap to 3d pts defining the geometry.
[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.
void xms::XmSlopedAbutmentUtilImpl::EnsureCrossSectionAtMaxX | ( | XmStampCrossSection & | a_xs | ) |
Makes sure the cross section goes to the maxX value.
[in,out] | a_xs | Cross 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().
|
overridevirtual |
breaklines from the end cap
[in,out] | a_io | StamperIo class |
[in] | a_ptIdx | The indexes of the points in the TIN created by stamping |
[out] | a_blTypes | The 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.
|
overridevirtual |
creates a breakline representing the outer polygon of the stamp
[in] | a_ptIdx | The indexes of the points in the TIN |
[out] | a_firstEndCapEndPts | first end cap ending points |
[out] | a_lastEndCapEndPts | last end cap ending points |
[in,out] | a_io | StamperIo 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().
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.
[in] | a_side | Indicates 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().
bool xms::XmSlopedAbutmentUtilImpl::Setup | ( | ) |
Sets up variables to perform the conversion.
Definition at line 175 of file XmSlopedAbutmentUtil.cpp.
References ComputeTransitionAngles(), EndCapCrossSectionShouldersTo2dCrossSection(), m_3dpts, xms::XmStamperIo::m_centerLine, m_cs, xms::XmStamperIo::m_cs, m_first, xms::XmStampCrossSection::m_idxLeftShoulder, xms::XmStampCrossSection::m_idxRightShoulder, m_io, xms::stXs3dPts::m_left, m_leftShoulder3d, m_pt1, m_pt2, xms::stXs3dPts::m_right, m_rightShoulder3d, xms::XmStamper3dPts::m_xsPts, SlopedAbutmentTo2dCrossSection(), and XM_ENSURE_TRUE.
Referenced by DoConvertTo3d().
bool xms::XmSlopedAbutmentUtilImpl::SlopedAbutmentTo2dCrossSection | ( | ) |
Sets up variables to perform the conversion.
Definition at line 235 of file XmSlopedAbutmentUtil.cpp.
References xms::XmStampCrossSection::m_idxLeftShoulder, xms::XmStampCrossSection::m_idxRightShoulder, xms::XmStampCrossSection::m_left, xms::XmStampCrossSection::m_leftMax, xms::XmSlopedAbutment::m_maxX, xms::XmStampCrossSection::m_right, xms::XmStampCrossSection::m_rightMax, m_sa, m_saXsect, xms::XmSlopedAbutment::m_slope, and XM_ENSURE_TRUE.
Referenced by Setup().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().