mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-29 14:00:49 +03:00
0024682: Move out B-spline cache from curves and surfaces to dedicated classes BSplCLib_Cache and BSplSLib_Cache
1. B-spline cache was moved into separated classes: BSplCLib_Cache for 2D and 3D curves and BSplSLib_Cache for surfaces. 2. The cache is used now in corresponding adaptor classes (Geom2dAdaptor_Curve, GeomAdaptor_Curve and GeomAdaptor_Surface) when the curve or surface is a B-spline. 3. Algorithms were changed to use adaptors for B-spline calculations instead of curves or surfaces. 4. Precised calculation of derivatives of surface of revolution is implemented for the points of surface placed on the axis of revolution (Geom_SurfaceOfRevolution.cxx) 5. Small modifications are made to adjust algorithms to new behavior of B-spline calculation. 6. Test cases were modified according to the modern behavior. 7. Changes in BOPAlgo_WireSplitter, BOPTools_AlgoTools, BRepLib_CheckCurveOnSurface and ShapeAnalysis_Wire to use adaptors instead of geometric entities 8. Allow Geom2dAdaptor and GeomAdaptor in case of offset curve to use corresponding adaptor for basis curve Modification of test-cases according to the new behavior.
This commit is contained in:
@@ -111,7 +111,7 @@ static
|
||||
static
|
||||
Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
|
||||
const TopoDS_Face& aF,
|
||||
const Handle(Geom_Surface)& aS,
|
||||
const GeomAdaptor_Surface& aS,
|
||||
const TopoDS_Edge& aE1,
|
||||
const TopoDS_Edge& aE2);
|
||||
|
||||
@@ -558,7 +558,7 @@ void CorrectWires(const TopoDS_Face& aFx)
|
||||
aT=BRep_Tool::Parameter(aV, aE);
|
||||
//
|
||||
aC2D->D0(aT, aP2D);
|
||||
aS->D0(aP2D.X(), aP2D.Y(), aP);
|
||||
aGAS.D0(aP2D.X(), aP2D.Y(), aP);
|
||||
aD2=aPV.SquareDistance(aP);
|
||||
if (aD2>aD2max) {
|
||||
aD2max=aD2;
|
||||
@@ -586,7 +586,7 @@ void CorrectWires(const TopoDS_Face& aFx)
|
||||
continue;
|
||||
}
|
||||
//
|
||||
aD2=IntersectCurves2d(aPV, aF, aS, aE, aE1);
|
||||
aD2=IntersectCurves2d(aPV, aF, aGAS, aE, aE1);
|
||||
if (aD2>aD2max) {
|
||||
aD2max=aD2;
|
||||
}
|
||||
@@ -606,7 +606,7 @@ void CorrectWires(const TopoDS_Face& aFx)
|
||||
//=======================================================================
|
||||
Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
|
||||
const TopoDS_Face& aF,
|
||||
const Handle(Geom_Surface)& aS,
|
||||
const GeomAdaptor_Surface& aGAS,
|
||||
const TopoDS_Edge& aE1,
|
||||
const TopoDS_Edge& aE2)
|
||||
{
|
||||
@@ -650,7 +650,7 @@ Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
|
||||
}
|
||||
//
|
||||
aP2D = aPoint.Value();
|
||||
aS->D0(aP2D.X(), aP2D.Y(), aP);
|
||||
aGAS.D0(aP2D.X(), aP2D.Y(), aP);
|
||||
aD=aPV.SquareDistance(aP);
|
||||
if (aD > aDist) {
|
||||
aDist = 1.01 * aD;
|
||||
|
Reference in New Issue
Block a user