1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0023952: Improving thread-safety of intersections, approximations and other modeling algorithms

AdvApp2Var_SysBase::mcrgene_ size reduced from 1000 to 32 elements, and each element reworked into typed structure.
fixed IntAna_Curve.cxx to prevent access to #NAN# SigneSqrtDis
fixed alignment of doubles by 8 bytes, and minor corrections
Minor correction: static const N given more specific name (MAX_ALLOC_NB)
Added QAcommands OCC23952sweep and OCC23952intersect
Added test cases bugs/modalg_5/bug23952_1 bug23952_2
This commit is contained in:
Roman Lygin
2013-05-31 17:04:58 +04:00
parent 416d012709
commit 1ef32e96ee
30 changed files with 857 additions and 614 deletions

View File

@@ -34,6 +34,7 @@ uses
is
Create returns HInterTool from IntPatch;
-- Pour polyedres
@@ -61,12 +62,12 @@ is
-- Methodes pour recherche des points interieurs
NbSamplePoints(myclass; S: HSurface from Adaptor3d)
NbSamplePoints(me: in out; S: HSurface from Adaptor3d)
returns Integer from Standard;
SamplePoint(myclass; S : HSurface from Adaptor3d;
SamplePoint(me; S: HSurface from Adaptor3d;
Index: Integer from Standard;
U,V: out Real from Standard);
@@ -220,5 +221,8 @@ is
returns Boolean from Standard;
fields
uinf,vinf,usup,vsup: Real from Standard;
end HInterTool;

View File

@@ -37,8 +37,10 @@
#include <Geom2d_BezierCurve.hxx>
#include <Geom2d_BSplineCurve.hxx>
static Standard_Real uinf,vinf,usup,vsup;
IntPatch_HInterTool::IntPatch_HInterTool() :
uinf (0.), vinf (0.), usup (0.), vsup (0.)
{
}
Standard_Integer IntPatch_HInterTool::NbSamplesV (const Handle(Adaptor3d_HSurface)& S,
const Standard_Real, const Standard_Real)
@@ -136,7 +138,7 @@ Standard_Integer IntPatch_HInterTool::NbSamplePoints (const Handle(Adaptor3d_HSu
void IntPatch_HInterTool::SamplePoint (const Handle(Adaptor3d_HSurface)& S,
const Standard_Integer Index,
Standard_Real& U,
Standard_Real& V )
Standard_Real& V ) const
{
Standard_Integer nbIntU = 1+NbSamplesU(S,uinf,usup);
nbIntU>>=1;

View File

@@ -163,9 +163,10 @@ void ComputeTangency (const IntPatch_TheSOnBounds& solrst,
gp_Pnt2d p2d;
gp_Vec2d d2d;
//
static math_Vector X(1, 2);
static math_Vector F(1, 1);
static math_Matrix D(1, 1, 1, 2);
double aX[2], aF[1], aD[1][2];
math_Vector X(aX, 1, 2);
math_Vector F(aF, 1, 1);
math_Matrix D(aD, 1, 1, 1, 2);
//
seqlength = 0;
NbPoints = solrst.NbPoints();

View File

@@ -457,7 +457,7 @@ void IntPatch_RstInt::PutVertexOnLine (Handle(IntPatch_Line)& L,
// Si OnFirst = True, c est que la surface Surf correspond a la 1ere
// surface donnee aux algo d intersection.
static IntPatch_SearchPnt Commun;
IntPatch_SearchPnt Commun;
Standard_Real U,V,W;
Standard_Real U1,V1,U2,V2;