}
return aTolMax;
}
+
+//=======================================================================
+//function : IsEdgeIsoline
+//purpose :
+//=======================================================================
+void BOPTools_AlgoTools2D::IsEdgeIsoline( const TopoDS_Edge& theE,
+ const TopoDS_Face& theF,
+ Standard_Boolean& isTheUIso,
+ Standard_Boolean& isTheVIso)
+{
+ isTheUIso = isTheVIso = Standard_False;
+
+ gp_Vec2d aT;
+ gp_Pnt2d aP;
+ Standard_Real aFirst = 0.0, aLast = 0.0;
+ const Handle(Geom2d_Curve) aPC = BRep_Tool::CurveOnSurface(theE, theF, aFirst, aLast);
+
+ aPC->D1(0.5*(aFirst+aLast), aP, aT);
+
+ const Standard_Real aSqMagn = aT.SquareMagnitude();
+ if(aSqMagn <= gp::Resolution())
+ return;
+
+ //Normalyze aT
+ aT /= sqrt(aSqMagn);
+
+ //sin(da) ~ da, when da->0.
+ const Standard_Real aTol = Precision::Angular();
+ const gp_Vec2d aRefVDir(0.0, 1.0), aRefUDir(1.0, 0.0);
+
+ const Standard_Real aDPv = aT.CrossMagnitude(aRefVDir),
+ aDPu = aT.CrossMagnitude(aRefUDir);
+
+ isTheUIso = (aDPv <= aTol);
+ isTheVIso = (aDPu <= aTol);
+}
\ No newline at end of file