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:
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user