Version: 8.3.0
SMESH_MAT2d::Branch Class Reference

Branch is a set of MA edges enclosed between branch points and/or MA ends. More...

#include <SMESH_MAT2d.hxx>

Public Member Functions

bool getBoundaryPoints (double param, BoundaryPoint &bp1, BoundaryPoint &bp2) const
 Returns points on two EDGEs, equidistant from a given point of this Branch. More...
 
bool getBoundaryPoints (std::size_t iMAEdge, double maEdgeParam, BoundaryPoint &bp1, BoundaryPoint &bp2) const
 Returns points on two EDGEs, equidistant from a given point of this Branch. More...
 
bool getBoundaryPoints (const BranchPoint &p, BoundaryPoint &bp1, BoundaryPoint &bp2) const
 Returns points on two EDGEs, equidistant from a given point of this Branch. More...
 
bool getParameter (const BranchPoint &p, double &u) const
 Return a parameter of a BranchPoint normalized within this Branch. More...
 
std::size_t nbEdges () const
 
const BranchEndgetEnd (bool the2nd) const
 
bool hasEndOfType (BranchEndType type) const
 Check type of both ends. More...
 
void getPoints (std::vector< gp_XY > &points, const double scale[2]) const
 Returns MA points. More...
 
void getGeomEdges (std::vector< std::size_t > &edgeIDs1, std::vector< std::size_t > &edgeIDs2) const
 Return indices of EDGEs equidistant from this branch. More...
 
void getOppositeGeomEdges (std::vector< std::size_t > &edgeIDs1, std::vector< std::size_t > &edgeIDs2, std::vector< BranchPoint > &divPoints) const
 Return indices of opposite parts of EDGEs equidistant from this branch. More...
 
bool isRemoved () const
 
void init (std::vector< const TVDEdge * > &maEdges, const Boundary *boundary, std::map< const TVDVertex *, BranchEndType > &endType)
 Copy points of an EDGE. More...
 
void setBranchesToEnds (const std::vector< Branch > &branches)
 fills BranchEnd::_branches of its ends More...
 
BranchPoint getPoint (const TVDVertex *vertex) const
 returns a BranchPoint corresponding to a TVDVertex More...
 
void setRemoved (const BranchPoint &proxyPoint)
 Sets a proxy point for a removed branch. More...
 

Static Public Member Functions

static void setGeomEdge (std::size_t geomIndex, const TVDEdge *maEdge)
 Store data of boundary segments in TVDEdge. More...
 
static std::size_t getGeomEdge (const TVDEdge *maEdge)
 
static void setBndSegment (std::size_t segIndex, const TVDEdge *maEdge)
 
static std::size_t getBndSegment (const TVDEdge *maEdge)
 

Private Member Functions

bool addDivPntForConcaVertex (std::vector< std::size_t > &edgeIDs1, std::vector< std::size_t > &edgeIDs2, std::vector< BranchPoint > &divPoints, const std::vector< const TVDEdge * > &maEdges, const std::vector< const TVDEdge * > &maEdgesTwin, int &i) const
 Looks for a BranchPoint position around a concave VERTEX. More...
 

Private Attributes

std::vector< const TVDEdge * > _maEdges
 
std::vector< double > _params
 
const Boundary_boundary
 
BranchEnd _endPoint1
 
BranchEnd _endPoint2
 
BranchPoint _proxyPoint
 

Detailed Description

Branch is a set of MA edges enclosed between branch points and/or MA ends.

It's main feature is to return two BoundaryPoint's per a point on it. Points on a Branch are defined by [0,1] parameter

Member Function Documentation

bool SMESH_MAT2d::Branch::addDivPntForConcaVertex ( std::vector< std::size_t > &  edgeIDs1,
std::vector< std::size_t > &  edgeIDs2,
std::vector< BranchPoint > &  divPoints,
const std::vector< const TVDEdge * > &  maEdges,
const std::vector< const TVDEdge * > &  maEdgesTwin,
int i 
) const
private
std::size_t SMESH_MAT2d::Branch::getBndSegment ( const TVDEdge maEdge)
static
bool SMESH_MAT2d::Branch::getBoundaryPoints ( double  param,
BoundaryPoint bp1,
BoundaryPoint bp2 
) const

Returns points on two EDGEs, equidistant from a given point of this Branch.

Parameters
[in]param- [0;1] normalized param on the Branch
[out]bp1- BoundaryPoint on EDGE with a lower index
[out]bp2- BoundaryPoint on EDGE with a higher index
Returns
bool - true if the BoundaryPoint's found

References Min().

bool SMESH_MAT2d::Branch::getBoundaryPoints ( std::size_t  iMAEdge,
double  maEdgeParam,
BoundaryPoint bp1,
BoundaryPoint bp2 
) const

Returns points on two EDGEs, equidistant from a given point of this Branch.

Parameters
[in]iMAEdge- index of a MA edge within this Branch
[in]maEdgeParam- [0;1] normalized param on the iMAEdge
[out]bp1- BoundaryPoint on EDGE with a lower index
[out]bp2- BoundaryPoint on EDGE with a higher index
Returns
bool - true if the BoundaryPoint's found
bool SMESH_MAT2d::Branch::getBoundaryPoints ( const BranchPoint p,
BoundaryPoint bp1,
BoundaryPoint bp2 
) const

Returns points on two EDGEs, equidistant from a given point of this Branch.

References SMESH_MAT2d::BranchPoint::_branch, SMESH_MAT2d::BranchPoint::_edgeParam, and SMESH_MAT2d::BranchPoint::_iEdge.

const BranchEnd* SMESH_MAT2d::Branch::getEnd ( bool  the2nd) const
std::size_t SMESH_MAT2d::Branch::getGeomEdge ( const TVDEdge maEdge)
static
void SMESH_MAT2d::Branch::getGeomEdges ( std::vector< std::size_t > &  edgeIDs1,
std::vector< std::size_t > &  edgeIDs2 
) const

Return indices of EDGEs equidistant from this branch.

void SMESH_MAT2d::Branch::getOppositeGeomEdges ( std::vector< std::size_t > &  edgeIDs1,
std::vector< std::size_t > &  edgeIDs2,
std::vector< BranchPoint > &  divPoints 
) const

Return indices of opposite parts of EDGEs equidistant from this branch.

Parameters
[out]edgeIDs1- EDGE index opposite to the edgeIDs2[i]-th EDGE
[out]edgeIDs2- EDGE index opposite to the edgeIDs1[i]-th EDGE
[out]divPoints- BranchPoint's located between two successive unique pairs of EDGE indices. A divPoints[i] can separate e.g. two following pairs of EDGE indices < 0, 2 > and < 0, 1 >. Number of divPoints is one less than number of edgeIDs

References SMESH_MAT2d::BranchPoint::_branch, SMESH_MAT2d::BranchPoint::_edgeParam, SMESH_MAT2d::BranchPoint::_iEdge, and Abs().

bool SMESH_MAT2d::Branch::getParameter ( const BranchPoint p,
double &  u 
) const
SMESH_MAT2d::BranchPoint SMESH_MAT2d::Branch::getPoint ( const TVDVertex vertex) const
void SMESH_MAT2d::Branch::getPoints ( std::vector< gp_XY > &  points,
const double  scale[2] 
) const

Returns MA points.

Parameters
[out]points- the 2d points
[in]scale- the scale that was used to scale the 2d space of MA

Referenced by SMESH_MAT2d::MedialAxis::getPoints(), and SMESH_MAT2d::MedialAxis::make3DCurve().

bool SMESH_MAT2d::Branch::hasEndOfType ( BranchEndType  type) const

Check type of both ends.

void SMESH_MAT2d::Branch::init ( std::vector< const TVDEdge * > &  maEdges,
const Boundary boundary,
std::map< const TVDVertex *, BranchEndType > &  endType 
)

Copy points of an EDGE.

References if().

bool SMESH_MAT2d::Branch::isRemoved ( ) const
std::size_t SMESH_MAT2d::Branch::nbEdges ( ) const
void SMESH_MAT2d::Branch::setBndSegment ( std::size_t  segIndex,
const TVDEdge maEdge 
)
static
void SMESH_MAT2d::Branch::setBranchesToEnds ( const std::vector< Branch > &  branches)

fills BranchEnd::_branches of its ends

void SMESH_MAT2d::Branch::setGeomEdge ( std::size_t  geomIndex,
const TVDEdge maEdge 
)
static

Store data of boundary segments in TVDEdge.

void SMESH_MAT2d::Branch::setRemoved ( const BranchPoint proxyPoint)

Sets a proxy point for a removed branch.

Parameters
[in]proxyPoint- a point of another branch to which all points of this branch are mapped

Field Documentation

const Boundary* SMESH_MAT2d::Branch::_boundary
private
BranchEnd SMESH_MAT2d::Branch::_endPoint1
private
BranchEnd SMESH_MAT2d::Branch::_endPoint2
private
std::vector<const TVDEdge*> SMESH_MAT2d::Branch::_maEdges
private
std::vector<double> SMESH_MAT2d::Branch::_params
private
BranchPoint SMESH_MAT2d::Branch::_proxyPoint
private