Version: 9.14.0
INTERP_KERNEL::SegSegIntersector Class Reference
Inheritance diagram for INTERP_KERNEL::SegSegIntersector:
Collaboration diagram for INTERP_KERNEL::SegSegIntersector:

Public Member Functions

bool areColinears () const
 
void areOverlappedOrOnlyColinears (bool &obviousNoIntersection, bool &areOverlapped)
 
std::list< IntersectElementgetIntersectionsCharacteristicVal () const
 
void getPlacements (Node *start, Node *end, TypeOfLocInEdge &whereStart, TypeOfLocInEdge &whereEnd, MergePoints &commonNode) const
 
bool haveTheySameDirection () const
 
 SegSegIntersector (const EdgeLin &e1, const EdgeLin &e2)
 

Friends

class Edge
 

Constructor & Destructor Documentation

◆ SegSegIntersector()

SegSegIntersector::SegSegIntersector ( const EdgeLin e1,
const EdgeLin e2 
)

Member Function Documentation

◆ areColinears()

bool SegSegIntersector::areColinears ( ) const
virtual

Retrieves if segs are colinears. Same philosophy as in other intersectors: we use epsilon as an absolute distance. If one puts the two vectors starting at the origin, determinant/dimChar is a close representative of the absolute distance between the tip of one vector to the other vector.

Implements INTERP_KERNEL::EdgeIntersector.

References INTERP_KERNEL::EdgeIntersector::_e1, INTERP_KERNEL::EdgeIntersector::_e2, and INTERP_KERNEL::Edge::getBounds().

Referenced by INTERP_KERNEL::QuadraticPolygon::appendEdgeFromCrudeDataArray(), MEDCoupling::DataArrayDouble::asArcOfCircle(), INTERP_KERNEL::QuadraticPolygon::BuildArcCircleEdge(), INTERP_KERNEL::QuadraticPolygon::BuildArcCirclePolygon(), INTERP_KERNEL::Edge::BuildEdgeFrom3Points(), and INTERP_KERNEL::EdgeArcCircle::BuildFromNodes().

◆ haveTheySameDirection()

bool SegSegIntersector::haveTheySameDirection ( ) const
virtual

Must be called when 'this' and 'other' have been detected to be at least colinear. Typically they are overlapped.

Implements INTERP_KERNEL::EdgeIntersector.

◆ getPlacements()

void SegSegIntersector::getPlacements ( Node start,
Node end,
TypeOfLocInEdge whereStart,
TypeOfLocInEdge whereEnd,
MergePoints commonNode 
) const
virtual

Precondition start and end must be so that there predecessor was in the same direction than 'e1'

Implements INTERP_KERNEL::EdgeIntersector.

◆ areOverlappedOrOnlyColinears()

void SegSegIntersector::areOverlappedOrOnlyColinears ( bool &  obviousNoIntersection,
bool &  areOverlapped 
)
virtual

Should be called once ! non const method.

Parameters
obviousNoIntersectionset to true if it is obvious that there is no intersection
areOverlappedif the two segs are colinears, this parameter looks if e1 and e2 are overlapped, i.e. is they lie on the same line (= this is different from a true intersection, two segments can be in "overlap" mode, without intersecting)

Implements INTERP_KERNEL::EdgeIntersector.

References INTERP_KERNEL::EdgeIntersector::_e1, INTERP_KERNEL::EdgeIntersector::_e2, INTERP_KERNEL::Edge::getBounds(), INTERP_KERNEL::Edge::getEndNode(), INTERP_KERNEL::Edge::getStartNode(), and INTERP_KERNEL::EdgeIntersector::identifyEarlyIntersection().

Referenced by INTERP_KERNEL::Edge::Interpolate1DLin().

◆ getIntersectionsCharacteristicVal()

Friends And Related Function Documentation

◆ Edge

friend class Edge
friend