mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0022653: Bad performance of Open CASCADE libraries that are used by Partition Algorithm Devekoped by : PKV
This commit is contained in:
@@ -108,8 +108,9 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
IntTools_FClass2d* pFClass2d;
|
||||
|
||||
if (!myFClass2dMap.Contains(aF)) {
|
||||
//
|
||||
anAdr=myFClass2dMap.FindFromKey1(aF);
|
||||
if (!anAdr) {
|
||||
Standard_Real aTolF;
|
||||
TopoDS_Face aFF=aF;
|
||||
aFF.Orientation(TopAbs_FORWARD);
|
||||
@@ -122,8 +123,8 @@
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=myFClass2dMap.FindFromKey(aF);
|
||||
pFClass2d=(IntTools_FClass2d*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pFClass2d=(IntTools_FClass2d*)*pAdr;
|
||||
}
|
||||
|
||||
return *pFClass2d;
|
||||
@@ -136,8 +137,9 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
GeomAPI_ProjectPointOnSurf* pProjPS;
|
||||
|
||||
if (!myProjPSMap.Contains(aF)) {
|
||||
//
|
||||
anAdr=myProjPSMap.FindFromKey1(aF);
|
||||
if (!anAdr) {
|
||||
Standard_Real Umin, Usup, Vmin, Vsup, anEpsT=1.e-12 ;
|
||||
BRepAdaptor_Surface aBAS;
|
||||
//
|
||||
@@ -157,8 +159,8 @@
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=myProjPSMap.FindFromKey(aF);
|
||||
pProjPS=(GeomAPI_ProjectPointOnSurf*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pProjPS=(GeomAPI_ProjectPointOnSurf*)*pAdr;
|
||||
}
|
||||
return *pProjPS;
|
||||
}
|
||||
@@ -170,8 +172,9 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
GeomAPI_ProjectPointOnCurve* pProjPC;
|
||||
|
||||
if (!myProjPCMap.Contains(aE)) {
|
||||
//
|
||||
anAdr=myProjPCMap.FindFromKey1(aE);
|
||||
if (!anAdr) {
|
||||
Standard_Real f, l;
|
||||
//
|
||||
Handle(Geom_Curve)aC3D=BRep_Tool::Curve (aE, f, l);
|
||||
@@ -182,10 +185,9 @@
|
||||
anAdr=(Standard_Address)pProjPC;
|
||||
myProjPCMap.Add(aE, anAdr);
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=myProjPCMap.FindFromKey(aE);
|
||||
pProjPC=(GeomAPI_ProjectPointOnCurve*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pProjPC=(GeomAPI_ProjectPointOnCurve*)*pAdr;
|
||||
}
|
||||
return *pProjPC;
|
||||
}
|
||||
@@ -198,8 +200,9 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
GeomAPI_ProjectPointOnCurve* pProjPT;
|
||||
|
||||
if (!myProjPTMap.Contains(aC3D)) {
|
||||
//
|
||||
anAdr=myProjPTMap.FindFromKey1(aC3D);
|
||||
if (!anAdr) {
|
||||
Standard_Real f, l;
|
||||
f=aC3D->FirstParameter();
|
||||
l=aC3D->LastParameter();
|
||||
@@ -212,8 +215,8 @@
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=myProjPTMap.FindFromKey(aC3D);
|
||||
pProjPT=(GeomAPI_ProjectPointOnCurve*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pProjPT=(GeomAPI_ProjectPointOnCurve*)*pAdr;
|
||||
}
|
||||
return *pProjPT;
|
||||
}
|
||||
@@ -225,8 +228,9 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
IntTools_SurfaceRangeLocalizeData* pSData;
|
||||
|
||||
if (!myProjSDataMap.Contains(aF)) {
|
||||
//
|
||||
anAdr=myProjSDataMap.FindFromKey1(aF);
|
||||
if (!anAdr) {
|
||||
//
|
||||
pSData=new IntTools_SurfaceRangeLocalizeData(3,
|
||||
3,
|
||||
@@ -238,8 +242,8 @@
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=myProjSDataMap.FindFromKey(aF);
|
||||
pSData=(IntTools_SurfaceRangeLocalizeData*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pSData=(IntTools_SurfaceRangeLocalizeData*)*pAdr;
|
||||
}
|
||||
return *pSData;
|
||||
|
||||
@@ -252,24 +256,21 @@
|
||||
{
|
||||
Standard_Address anAdr;
|
||||
BRepClass3d_SolidClassifier* pSC;
|
||||
|
||||
if (!mySClassMap.Contains(aSolid)) {
|
||||
//
|
||||
anAdr=mySClassMap.FindFromKey1(aSolid);
|
||||
if (!anAdr) {
|
||||
//
|
||||
pSC=new BRepClass3d_SolidClassifier(aSolid);
|
||||
//
|
||||
anAdr=(Standard_Address)pSC;
|
||||
mySClassMap.Add(aSolid, anAdr);
|
||||
}
|
||||
|
||||
else {
|
||||
anAdr=mySClassMap.FindFromKey(aSolid);
|
||||
pSC =(BRepClass3d_SolidClassifier*)anAdr;
|
||||
Standard_Address *pAdr=(Standard_Address *)anAdr;
|
||||
pSC =(BRepClass3d_SolidClassifier*)*pAdr;
|
||||
}
|
||||
return *pSC;
|
||||
}
|
||||
|
||||
|
||||
//modified by NIZNHY-PKV Tue Feb 2 08:33:16 2010f
|
||||
//=======================================================================
|
||||
//function : ComputeVE
|
||||
//purpose :
|
||||
@@ -302,9 +303,12 @@
|
||||
if (BRep_Tool::Degenerated(aE2)) {
|
||||
return -1;
|
||||
}
|
||||
if (!BRep_Tool::IsGeometric(aE2)) {
|
||||
return -2;
|
||||
}
|
||||
//
|
||||
//modified by NIZNHY-PKV Wed Jul 13 08:30:08 2011f
|
||||
//if (!BRep_Tool::IsGeometric(aE2)) {
|
||||
// return -2;
|
||||
//}
|
||||
//modified by NIZNHY-PKV Wed Jul 13 08:30:13 2011t
|
||||
//
|
||||
Standard_Real aTolV1, aTolE2, aTolSum, aTolVx;
|
||||
Standard_Integer aNbProj;
|
||||
@@ -337,7 +341,6 @@
|
||||
//
|
||||
return 0;
|
||||
}
|
||||
//modified by NIZNHY-PKV Tue Feb 2 08:33:21 2010t
|
||||
//=======================================================================
|
||||
//function : ComputeVS
|
||||
//purpose :
|
||||
|
@@ -83,25 +83,34 @@ static
|
||||
//=======================================================================
|
||||
Standard_Boolean IntTools_Tools::IsClosed (const Handle(Geom_Curve)& aC3D)
|
||||
{
|
||||
|
||||
Standard_Real aF, aL, aDist;
|
||||
Standard_Boolean bRet;
|
||||
Standard_Real aF, aL, aDist, aPC;
|
||||
gp_Pnt aP1, aP2;
|
||||
|
||||
|
||||
Handle (Geom_BoundedCurve) aGBC=
|
||||
Handle (Geom_BoundedCurve)::DownCast(aC3D);
|
||||
if (aGBC.IsNull()) {
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
|
||||
aF=aC3D->FirstParameter();
|
||||
aL=aC3D-> LastParameter();
|
||||
|
||||
aC3D->D0(aF, aP1);
|
||||
aC3D->D0(aL, aP2);
|
||||
|
||||
aDist=aP1.Distance(aP2);
|
||||
//return (aDist < 1.e-12);
|
||||
return (aDist < Precision::Confusion());
|
||||
|
||||
//
|
||||
//modified by NIZNHY-PKV Mon Jul 04 11:58:23 2011f
|
||||
aPC=Precision::Confusion();
|
||||
aPC=aPC*aPC;
|
||||
aDist=aP1.SquareDistance(aP2);
|
||||
bRet=aDist<aPC;
|
||||
return bRet;
|
||||
//
|
||||
//aDist=aP1.Distance(aP2);
|
||||
//return (aDist < Precision::Confusion());
|
||||
//modified by NIZNHY-PKV Mon Jul 04 11:59:50 2011t
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -218,7 +227,6 @@ static
|
||||
aF=aC3D->FirstParameter();
|
||||
aL=aC3D->LastParameter();
|
||||
aMid=0.5*(aF+aL);
|
||||
//modified by NIZNHY-PKV Thu Feb 5 08:26:58 2009 f
|
||||
GeomAdaptor_Curve aGAC(aC3D);
|
||||
GeomAbs_CurveType aCT=aGAC.GetType();
|
||||
if (aCT==GeomAbs_BSplineCurve ||
|
||||
@@ -226,7 +234,6 @@ static
|
||||
//aMid=0.5*aMid;
|
||||
aMid=IntTools_Tools::IntermediatePoint(aF, aL);
|
||||
}
|
||||
//modified by NIZNHY-PKV Thu Feb 5 08:27:00 2009 t
|
||||
//
|
||||
Handle(Geom_Curve) aC3DNewF, aC3DNewL;
|
||||
aC3DNewF =new Geom_TrimmedCurve (aC3D, aF, aMid);
|
||||
@@ -278,20 +285,26 @@ static
|
||||
const Standard_Real aTolPV,
|
||||
const TopoDS_Vertex& aV)
|
||||
{
|
||||
Standard_Boolean bRet;
|
||||
Standard_Real aTolV, aD, dTol;
|
||||
gp_Pnt aPv;
|
||||
|
||||
aTolV=BRep_Tool::Tolerance(aV);
|
||||
//
|
||||
//modified by NIZNHY-PKV Thu Jan 18 17:44:46 2007f
|
||||
//aTolV=aTolV+aTolPV;
|
||||
dTol=Precision::Confusion();
|
||||
aTolV=aTolV+aTolPV+dTol;
|
||||
//modified by NIZNHY-PKV Thu Jan 18 17:44:49 2007t
|
||||
//
|
||||
aPv=BRep_Tool::Pnt(aV);
|
||||
aD=aPv.Distance(aP);
|
||||
return (aD<=aTolV);
|
||||
//
|
||||
//modified by NIZNHY-PKV Mon Jul 04 12:00:37 2011f
|
||||
aD=aPv.SquareDistance(aP);
|
||||
aTolV=aTolV*aTolV;
|
||||
bRet=(aD<=aTolV);
|
||||
return bRet;
|
||||
//
|
||||
//aD=aPv.Distance(aP);
|
||||
//return (aD<=aTolV);
|
||||
//modified by NIZNHY-PKV Mon Jul 04 12:00:40 2011t
|
||||
}
|
||||
|
||||
|
||||
@@ -390,11 +403,14 @@ static
|
||||
aTolV1=BRep_Tool::Tolerance(aV1);
|
||||
aTolV2=BRep_Tool::Tolerance(aV2);
|
||||
aTolSum=aTolV1+aTolV2;
|
||||
|
||||
|
||||
aP1=BRep_Tool::Pnt(aV1);
|
||||
aP2=BRep_Tool::Pnt(aV2);
|
||||
|
||||
d=aP1.Distance(aP2);
|
||||
//modified by NIZNHY-PKV Mon Jul 04 11:55:52 2011f
|
||||
aTolSum=aTolSum*aTolSum;
|
||||
d=aP1.SquareDistance(aP2);
|
||||
//d=aP1.Distance(aP2);
|
||||
//modified by NIZNHY-PKV Mon Jul 04 11:55:53 2011t
|
||||
if (d<aTolSum) {
|
||||
return 0;
|
||||
}
|
||||
@@ -442,7 +458,8 @@ static
|
||||
const TopoDS_Edge& aE2)
|
||||
|
||||
{
|
||||
Standard_Real f1, l1, m1, f2, l2, m2, aTol1, aTol2, aSumTol;
|
||||
Standard_Boolean bRet;
|
||||
Standard_Real f1, l1, m1, f2, l2, m2, aTol1, aTol2, aSumTol, aD2;
|
||||
gp_Pnt aP1, aP2;
|
||||
|
||||
aTol1=BRep_Tool::Tolerance(aE1);
|
||||
@@ -456,11 +473,17 @@ static
|
||||
C2->D0(m2, aP2);
|
||||
|
||||
aSumTol=aTol1+aTol2;
|
||||
|
||||
if (aP1.Distance(aP2) < aSumTol) {
|
||||
return Standard_True;
|
||||
}
|
||||
return Standard_False;
|
||||
//modified by NIZNHY-PKV Mon Jul 04 12:02:20 2011f
|
||||
aSumTol=aSumTol*aSumTol;
|
||||
aD2=aP1.SquareDistance(aP2);
|
||||
bRet=aD2<aSumTol;
|
||||
return bRet;
|
||||
//
|
||||
//if (aP1.Distance(aP2) < aSumTol) {
|
||||
// return Standard_True;
|
||||
//}
|
||||
//return Standard_False;
|
||||
//modified by NIZNHY-PKV Mon Jul 04 12:02:24 2011t
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
Reference in New Issue
Block a user