mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0025531: Difference in intersection result on Windows and Linux platform is very significant
1. Dump of WLine is shown with more precise. 2. Equation solving with more precise. 3. Dump of Multy-line. 4. Code optimization. Some test cases were updated in accordance with their new behaviour. Correction of test cases for issue CR25531
This commit is contained in:
@@ -936,7 +936,6 @@ void ApproxInt_Approx::Perform(const TheISurface& ISurf,
|
||||
ApproxInt_TheImpPrmSvSurfaces myImpPrmSvSurfaces(ISurf,PSurf);
|
||||
Standard_Integer nbpntbez = indicemax-indicemin;
|
||||
|
||||
Standard_Address ptrsvsurf = NULL;
|
||||
Standard_Boolean cut = Standard_True;
|
||||
if(nbpntbez < LimRajout)
|
||||
myApproxBez = Standard_False;
|
||||
@@ -947,7 +946,7 @@ void ApproxInt_Approx::Perform(const TheISurface& ISurf,
|
||||
cut = Standard_False;
|
||||
//-- cout<<" ApproxInt : Nb de points = "<<nbpntbez<<" Pas de rajout "<<endl;
|
||||
}
|
||||
ptrsvsurf = &myImpPrmSvSurfaces;
|
||||
Standard_Address ptrsvsurf = &myImpPrmSvSurfaces;
|
||||
|
||||
if(nbpntbez < LimRajout) myApproxBez = Standard_False;
|
||||
|
||||
@@ -1057,6 +1056,11 @@ void ApproxInt_Approx::Perform(const TheISurface& ISurf,
|
||||
imax);
|
||||
if(myApproxBez) {
|
||||
myComputeLineBezier.Perform(myMultiLine);
|
||||
|
||||
#ifdef OCCT_DEBUG
|
||||
//myMultiLine.Dump();
|
||||
#endif
|
||||
|
||||
if (myComputeLineBezier.NbMultiCurves() == 0)
|
||||
return;
|
||||
myTolReached&=myComputeLineBezier.IsToleranceReached();
|
||||
|
@@ -116,6 +116,9 @@ is
|
||||
|
||||
MakeMLBetween(me; Low,High,NbPointsToInsert: Integer from Standard)
|
||||
returns MultiLine from ApproxInt is static;
|
||||
|
||||
Dump(me);
|
||||
---Purpose: Dump of the current multi-line.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
@@ -613,3 +613,16 @@ const {
|
||||
}
|
||||
//======================================================================
|
||||
|
||||
void ApproxInt_MultiLine::Dump() const
|
||||
{
|
||||
TColgp_Array1OfPnt anArr1(1, 1);
|
||||
TColgp_Array1OfPnt2d anArr2(1, 2);
|
||||
|
||||
for(Standard_Integer ind = FirstPoint(); ind <= LastPoint(); ind++)
|
||||
{
|
||||
Value(ind, anArr1, anArr2);
|
||||
printf("%4d [%+10.20f %+10.20f %+10.20f] [%+10.20f %+10.20f] [%+10.20f %+10.20f]\n",
|
||||
ind, anArr1(1).X(), anArr1(1).Y(), anArr1(1).Z(), anArr2(1).X(),anArr2(1).Y(),anArr2(2).X(),anArr2(2).Y());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -127,5 +127,8 @@ is
|
||||
---C++:inline
|
||||
returns Status from Approx;
|
||||
|
||||
Dump(myclass; ML: TheMultiLine);
|
||||
---Purpose: Dump of the current multi-line.
|
||||
|
||||
end MultiLineTool;
|
||||
|
||||
|
@@ -115,4 +115,9 @@ inline TheMultiLine ApproxInt_MultiLineTool::MakeMLBetween(const TheMultiLine& M
|
||||
|
||||
return(ML.MakeMLBetween(I1,I2,NbPMin));
|
||||
}
|
||||
|
||||
inline void ApproxInt_MultiLineTool::Dump(const TheMultiLine& ML)
|
||||
{
|
||||
ML.Dump();
|
||||
}
|
||||
//================================================================================
|
||||
|
Reference in New Issue
Block a user