24 #ifndef FACE_INTERSECTION_TOOLS_HH
25 #define FACE_INTERSECTION_TOOLS_HH
27 #include "message-macros.hh"
29 #include "g-map-vertex.hh"
30 #include "general-tools.hh"
45 : FPoint(APoint), FEnteringSector(NULL), FLeavingSector(NULL),
46 FCellDim(ADim), FPos(APos) {}
48 const CVertex &
getPoint ()
const {
return FPoint; }
54 void setPoint (
const CVertex & APoint){ FPoint = APoint; }
62 CDart *FEnteringSector;
63 CDart *FLeavingSector;
72 const CVertex & AIntersectionLine = ORIGIN)
73 : FTools(ATools), FInterLine(AIntersectionLine) {}
90 APoint1->
getPoint()).dot(FInterLine) > 0.0;
94 CGeneralTools *FTools;
102 const CVertex & AAxis,
const CVertex & ARef,
103 int AVertexDI,
int AFacePlaneDI,
int ANegativeMark)
104 : FMap(AMap), FTools(ATools), FAxis(AAxis), FRefX(ARef),
105 FVertexDI(AVertexDI), FFacePlaneDI(AFacePlaneDI),
106 FNegativeMark(ANegativeMark)
108 FRefY = FAxis * FRefX;
113 if (AVector.dot(FRefX) > 0.0) {
114 if (AVector.dot(FRefY) > 0.0)
return 0;
118 if (AVector.dot(FRefY) > 0.0)
return 1;
128 plane = (CPlane*)FMap->getDirectInfo(AFace1, FFacePlaneDI);
130 n1 = (FMap->isMarked(AFace1, FNegativeMark) ?
131 -plane->getNormal() : plane->getNormal());
133 FUNC_WARN(
"Calcul de la normale à une face non sélectionnée !");
134 n1 = FTools->faceNormalVector(AFace1, FVertexDI);
137 plane = (CPlane*)FMap->getDirectInfo(AFace2, FFacePlaneDI);
139 n2 = (FMap->isMarked(AFace2, FNegativeMark) ?
140 -plane->getNormal() : plane->getNormal());
142 FUNC_WARN(
"Calcul de la normale à une face non sélectionnée !");
143 n2 = FTools->faceNormalVector(AFace2, FVertexDI);
150 return (n1 * n2).dot(FAxis) > 0.0;
158 CGeneralTools *FTools;
159 CVertex FAxis, FRefX, FRefY;
167 #endif // FACE_INTERSECTION_TOOLS_HH