Public Member Functions | |
SegSegIntersector (const EdgeLin &e1, const EdgeLin &e2) | |
bool | areColinears () const |
bool | haveTheySameDirection () const |
void | getPlacements (Node *start, Node *end, TypeOfLocInEdge &whereStart, TypeOfLocInEdge &whereEnd, MergePoints &commonNode) const |
void | areOverlappedOrOnlyColinears (const Bounds *whereToFind, bool &obviousNoIntersection, bool &areOverlapped) |
std::list< IntersectElement > | getIntersectionsCharacteristicVal () const |
Friends | |
class | Edge |
Additional Inherited Members | |
![]() | |
virtual | ~EdgeIntersector () |
virtual bool | haveTheySameDirection () const =0 |
virtual void | getPlacements (Node *start, Node *end, TypeOfLocInEdge &whereStart, TypeOfLocInEdge &whereEnd, MergePoints &commonNode) const =0 |
bool | intersect (const Bounds *whereToFind, std::vector< Node * > &newNodes, bool &order, MergePoints &commonNode) |
virtual void | areOverlappedOrOnlyColinears (const Bounds *whereToFind, bool &obviousNoIntersection, bool &areOverlapped)=0 |
virtual std::list < IntersectElement > | getIntersectionsCharacteristicVal () const =0 |
References INTERP_KERNEL::Edge::getEndNode(), and INTERP_KERNEL::Edge::getStartNode().
bool SegSegIntersector::areColinears | ( | ) | const |
retrieves if segs are colinears. WARNING !!! Contrary to areOverlappedOrOnlyColinears method, this method use an another precision to detect colinearity !
Referenced by INTERP_KERNEL::QuadraticPolygon::appendEdgeFromCrudeDataArray(), INTERP_KERNEL::QuadraticPolygon::BuildArcCirclePolygon(), and INTERP_KERNEL::EdgeArcCircle::BuildFromNodes().
bool SegSegIntersector::haveTheySameDirection | ( | ) | const |
Must be called when 'this' and 'other' have been detected to be at least colinear. Typically they are overlapped. Must be called after call of areOverlappedOrOnlyColinears.
void SegSegIntersector::getPlacements | ( | Node * | start, |
Node * | end, | ||
TypeOfLocInEdge & | whereStart, | ||
TypeOfLocInEdge & | whereEnd, | ||
MergePoints & | commonNode | ||
) | const |
Precondition start and end must be so that there predecessor was in the same direction than 'e1'
void SegSegIntersector::areOverlappedOrOnlyColinears | ( | const Bounds * | whereToFind, |
bool & | colinearity, | ||
bool & | areOverlapped | ||
) |
Should be called once ! non const method.
whereToFind | specifies the box where final seek should be done. Essentially it is used for caracteristic reason. |
colinearity | returns if regarding QUADRATIC_PLANAR::_precision ; e1 and e2 are colinears If true 'this' is modified ! So this method be called once above all if true is returned for this parameter. |
areOverlapped | if colinearity if true, this parameter looks if e1 and e2 are overlapped. |
References INTERP_KERNEL::EdgeIntersector::_e1, INTERP_KERNEL::EdgeIntersector::_e2, and INTERP_KERNEL::Edge::getStartNode().
Referenced by INTERP_KERNEL::Edge::Interpolate1DLin().
std::list< IntersectElement > SegSegIntersector::getIntersectionsCharacteristicVal | ( | ) | const |
areColinears method should be called before with a returned colinearity equal to false to avoid bad news.
References INTERP_KERNEL::EdgeIntersector::_e1, INTERP_KERNEL::EdgeIntersector::_e2, INTERP_KERNEL::Node::declareOn(), INTERP_KERNEL::Edge::getCharactValue(), INTERP_KERNEL::Edge::getEndNode(), INTERP_KERNEL::Edge::getStartNode(), INTERP_KERNEL::Node::isEqual(), and INTERP_KERNEL::SameTypeEdgeIntersector::keepOrder().
|
friend |