Public Member Functions | |
virtual bool | areColinears () const =0 |
virtual void | areOverlappedOrOnlyColinears (const Bounds *whereToFind, bool &obviousNoIntersection, bool &areOverlapped)=0 |
virtual std::list < IntersectElement > | getIntersectionsCharacteristicVal () const =0 |
virtual void | getPlacements (Node *start, Node *end, TypeOfLocInEdge &whereStart, TypeOfLocInEdge &whereEnd, MergePoints &commonNode) const =0 |
virtual bool | haveTheySameDirection () const =0 |
bool | intersect (const Bounds *whereToFind, std::vector< Node * > &newNodes, bool &order, MergePoints &commonNode) |
virtual bool | keepOrder () const =0 |
virtual | ~EdgeIntersector () |
Protected Member Functions | |
EdgeIntersector (const Edge &e1, const Edge &e2) | |
void | obviousCaseForCurvAbscisse (Node *node, TypeOfLocInEdge &where, MergePoints &commonNode, bool &obvious) const |
Protected Attributes | |
const Edge & | _e1 |
const Edge & | _e2 |
This abstract interface specifies all the methods to be overloaded of all possibilities edge-intersection.
All non symetric methods are relative to 'e1'.
|
virtual |
|
pure virtual |
Implemented in INTERP_KERNEL::CrossTypeEdgeIntersector, and INTERP_KERNEL::SameTypeEdgeIntersector.
|
pure virtual |
|
pure virtual |
to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called
Implemented in INTERP_KERNEL::CrossTypeEdgeIntersector, INTERP_KERNEL::SegSegIntersector, and INTERP_KERNEL::ArcCArcCIntersector.
Referenced by INTERP_KERNEL::Edge::IntersectOverlapped().
|
pure virtual |
to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called
Implemented in INTERP_KERNEL::ArcCSegIntersector, INTERP_KERNEL::SegSegIntersector, and INTERP_KERNEL::ArcCArcCIntersector.
Referenced by INTERP_KERNEL::Edge::IntersectOverlapped().
bool EdgeIntersector::intersect | ( | const Bounds * | whereToFind, |
std::vector< Node * > & | newNodes, | ||
bool & | order, | ||
MergePoints & | commonNode | ||
) |
When true is returned, newNodes should contains at least 1 element. All merging nodes betw _e1 and _e2 extremities must be done.
References getIntersectionsCharacteristicVal(), INTERP_KERNEL::IntersectElement::LIMIT_ALONE, and INTERP_KERNEL::IntersectElement::LIMIT_ON.
Referenced by INTERP_KERNEL::Edge::Intersect().
|
pure virtual |
Should be called only once per association.
Implemented in INTERP_KERNEL::ArcCSegIntersector, INTERP_KERNEL::SegSegIntersector, and INTERP_KERNEL::ArcCArcCIntersector.
Referenced by INTERP_KERNEL::Edge::Intersect().
|
pure virtual |
The size of returned vector is equal to number of potential intersections point. The values are so that their are interpretable by virtual Edge::isIn method.
Implemented in INTERP_KERNEL::ArcCSegIntersector, INTERP_KERNEL::SegSegIntersector, and INTERP_KERNEL::ArcCArcCIntersector.
Referenced by intersect().
|
protected |
Locates 'node' regarding edge this->_e1. If node is located close to (with distant lt epsilon) start or end point of _e1, 'node' takes its place. In this case 'obvious' is set to true and 'commonNode' stores information of merge point and finally 'where' is set. Furthermore 'node' is declared as ON LIMIT to indicate in locating process that an absolute location computation will have to be done. If 'node' is not close to start or end point of _e1, 'obvious' is set to false and 'commonNode' and 'where' are let unchanged.
References _e1, INTERP_KERNEL::Edge::changeEndNodeWith(), INTERP_KERNEL::Edge::changeStartNodeWith(), INTERP_KERNEL::Node::declareOnLim(), INTERP_KERNEL::END, INTERP_KERNEL::MergePoints::end1Replaced(), INTERP_KERNEL::Edge::getEndNode(), INTERP_KERNEL::Edge::getStartNode(), INTERP_KERNEL::Node::isEqual(), INTERP_KERNEL::START, and INTERP_KERNEL::MergePoints::start1Replaced().
Referenced by INTERP_KERNEL::ArcCArcCIntersector::getPlacements().
|
protected |
Referenced by INTERP_KERNEL::SegSegIntersector::areOverlappedOrOnlyColinears(), INTERP_KERNEL::ArcCArcCIntersector::getIntersectionsCharacteristicVal(), INTERP_KERNEL::SegSegIntersector::getIntersectionsCharacteristicVal(), INTERP_KERNEL::ArcCSegIntersector::getIntersectionsCharacteristicVal(), and obviousCaseForCurvAbscisse().
|
protected |
Referenced by INTERP_KERNEL::SegSegIntersector::areOverlappedOrOnlyColinears(), INTERP_KERNEL::ArcCSegIntersector::areOverlappedOrOnlyColinears(), INTERP_KERNEL::ArcCArcCIntersector::getIntersectionsCharacteristicVal(), INTERP_KERNEL::SegSegIntersector::getIntersectionsCharacteristicVal(), and INTERP_KERNEL::ArcCSegIntersector::getIntersectionsCharacteristicVal().