Version: 5.1.6

INTERP_KERNEL.SegSegIntersector Class Reference

#include <InterpKernelGeo2DEdgeLin.hxx>

Inheritance diagram for INTERP_KERNEL.SegSegIntersector:
Inheritance graph

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< IntersectElementgetIntersectionsCharacteristicVal () const

Private Member Functions

void getCurveAbscisse (Node *node, TypeOfLocInEdge &where, MergePoints &commonNode) const

Private Attributes

int _ind
 index on which all single index op will be performed. Filled in case colinearity is equal to true.
double _col [2]
double _matrix [4]

Friends

class Edge

Constructor & Destructor Documentation

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

Member Function Documentation

bool SegSegIntersector::areColinears (  )  const

retrieves if segs are colinears. WARNING !!! Contrary to areOverlappedOrOnlyColinears method, this method use an another precision to detect colinearity !

References INTERP_KERNEL.QUADRATIC_PLANAR._arc_detection_precision, INTERP_KERNEL.SegSegIntersector._matrix, and INTERP_KERNEL.determinant().

bool SegSegIntersector::haveTheySameDirection (  )  const [virtual]

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.

Implements INTERP_KERNEL.EdgeIntersector.

References INTERP_KERNEL.SegSegIntersector._matrix.

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.

References INTERP_KERNEL.SegSegIntersector.getCurveAbscisse().

void SegSegIntersector::areOverlappedOrOnlyColinears ( const Bounds whereToFind,
bool &  colinearity,
bool &  areOverlapped 
) [virtual]

Should be called once ! non const method.

Parameters:
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.

Implements INTERP_KERNEL.EdgeIntersector.

References INTERP_KERNEL.EdgeIntersector._e1, INTERP_KERNEL.EdgeIntersector._e2, INTERP_KERNEL.SegSegIntersector._matrix, INTERP_KERNEL.QUADRATIC_PLANAR._precision, INTERP_KERNEL.determinant(), and INTERP_KERNEL.Edge.getStartNode().

std::list< IntersectElement > SegSegIntersector::getIntersectionsCharacteristicVal (  )  const [virtual]
void SegSegIntersector::getCurveAbscisse ( Node node,
TypeOfLocInEdge where,
MergePoints commonNode 
) const [private]

Friends And Related Function Documentation

friend class Edge [friend]

Field Documentation

index on which all single index op will be performed. Filled in case colinearity is equal to true.