mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0026252: GeomAdaptor_Surface should use inner adaptor to calculate values of complex surfaces
* Implement GeomEvaluator package * Inject evaluators to GeomAdaptor_Surface to calculate values of complex surfaces * Inject evaluators to Geom_Surface classes to calculate values for offset surfaces, surfaces of revolution and surfaces of extrusion * Move Adaptor3d_SurfaceOfLinearExtrusion and Adaptor3d_SurfaceOfRevolution to GeomAdaptor and unify calculation of their values and derivatives * Code optimizations * Update test cases Update of test-cases according to the new behavior
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
#include <gp_Vec.hxx>
|
||||
#include <math_FunctionSetRoot.hxx>
|
||||
#include <math_Vector.hxx>
|
||||
#include <Adaptor3d_HSurfaceOfLinearExtrusion.hxx>
|
||||
#include <GeomAdaptor_HSurfaceOfLinearExtrusion.hxx>
|
||||
|
||||
|
||||
static gp_Ax2 GetPosition (const Handle(Adaptor3d_HCurve)& C);
|
||||
@@ -158,7 +158,7 @@ Extrema_ExtPExtS::Extrema_ExtPExtS()
|
||||
//=============================================================================
|
||||
|
||||
Extrema_ExtPExtS::Extrema_ExtPExtS (const gp_Pnt& theP,
|
||||
const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& theS,
|
||||
const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& theS,
|
||||
const Standard_Real theUmin,
|
||||
const Standard_Real theUsup,
|
||||
const Standard_Real theVmin,
|
||||
@@ -189,7 +189,7 @@ Extrema_ExtPExtS::Extrema_ExtPExtS (const gp_Pnt&
|
||||
//=============================================================================
|
||||
|
||||
Extrema_ExtPExtS::Extrema_ExtPExtS (const gp_Pnt& theP,
|
||||
const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& theS,
|
||||
const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& theS,
|
||||
const Standard_Real theTolU,
|
||||
const Standard_Real theTolV)
|
||||
: myuinf(theS->FirstUParameter()),
|
||||
@@ -219,7 +219,7 @@ Extrema_ExtPExtS::Extrema_ExtPExtS (const gp_Pnt&
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void Extrema_ExtPExtS::Initialize (const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& theS,
|
||||
void Extrema_ExtPExtS::Initialize (const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& theS,
|
||||
const Standard_Real theUinf,
|
||||
const Standard_Real theUsup,
|
||||
const Standard_Real theVinf,
|
||||
|
@@ -30,7 +30,7 @@
|
||||
#include <Extrema_POnSurf.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
class Adaptor3d_HCurve;
|
||||
class Adaptor3d_HSurfaceOfLinearExtrusion;
|
||||
class GeomAdaptor_HSurfaceOfLinearExtrusion;
|
||||
class StdFail_NotDone;
|
||||
class Standard_OutOfRange;
|
||||
class gp_Pnt;
|
||||
@@ -54,14 +54,14 @@ public:
|
||||
|
||||
//! It calculates all the distances between a point
|
||||
//! from gp and a Surface.
|
||||
Standard_EXPORT Extrema_ExtPExtS(const gp_Pnt& P, const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT Extrema_ExtPExtS(const gp_Pnt& P, const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
//! It calculates all the distances between a point
|
||||
//! from gp and a Surface.
|
||||
Standard_EXPORT Extrema_ExtPExtS(const gp_Pnt& P, const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& S, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT Extrema_ExtPExtS(const gp_Pnt& P, const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& S, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
//! Initializes the fields of the algorithm.
|
||||
Standard_EXPORT void Initialize (const Handle(Adaptor3d_HSurfaceOfLinearExtrusion)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT void Initialize (const Handle(GeomAdaptor_HSurfaceOfLinearExtrusion)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
Standard_EXPORT void Perform (const gp_Pnt& P);
|
||||
|
||||
@@ -100,7 +100,7 @@ private:
|
||||
Standard_Real mytolv;
|
||||
Extrema_FuncExtPS myF;
|
||||
Handle(Adaptor3d_HCurve) myC;
|
||||
Handle(Adaptor3d_HSurfaceOfLinearExtrusion) myS;
|
||||
Handle(GeomAdaptor_HSurfaceOfLinearExtrusion) myS;
|
||||
gp_Vec myDirection;
|
||||
gp_Ax2 myPosition;
|
||||
Extrema_GenExtPS myExtPS;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
|
||||
#include <Adaptor3d_HCurve.hxx>
|
||||
#include <Adaptor3d_HSurfaceOfRevolution.hxx>
|
||||
#include <GeomAdaptor_HSurfaceOfRevolution.hxx>
|
||||
#include <ElCLib.hxx>
|
||||
#include <Extrema_ExtPElC.hxx>
|
||||
#include <Extrema_ExtPRevS.hxx>
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <Standard_Type.hxx>
|
||||
#include <StdFail_NotDone.hxx>
|
||||
|
||||
static gp_Ax2 GetPosition (const Adaptor3d_SurfaceOfRevolution& S)//const Handle(Adaptor_HCurve)& C)
|
||||
static gp_Ax2 GetPosition (const GeomAdaptor_SurfaceOfRevolution& S)//const Handle(Adaptor_HCurve)& C)
|
||||
{
|
||||
Handle(Adaptor3d_HCurve) C = S.BasisCurve();
|
||||
|
||||
@@ -76,7 +76,7 @@ static gp_Ax2 GetPosition (const Adaptor3d_SurfaceOfRevolution& S)//const Handle
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
static Standard_Boolean HasSingularity(const Adaptor3d_SurfaceOfRevolution& S)
|
||||
static Standard_Boolean HasSingularity(const GeomAdaptor_SurfaceOfRevolution& S)
|
||||
{
|
||||
|
||||
const Handle(Adaptor3d_HCurve) C = S.BasisCurve();
|
||||
@@ -216,7 +216,7 @@ Extrema_ExtPRevS::Extrema_ExtPRevS()
|
||||
//=======================================================================
|
||||
|
||||
Extrema_ExtPRevS::Extrema_ExtPRevS (const gp_Pnt& theP,
|
||||
const Handle(Adaptor3d_HSurfaceOfRevolution)& theS,
|
||||
const Handle(GeomAdaptor_HSurfaceOfRevolution)& theS,
|
||||
const Standard_Real theUmin,
|
||||
const Standard_Real theUsup,
|
||||
const Standard_Real theVmin,
|
||||
@@ -240,7 +240,7 @@ Extrema_ExtPRevS::Extrema_ExtPRevS (const gp_Pnt&
|
||||
//=======================================================================
|
||||
|
||||
Extrema_ExtPRevS::Extrema_ExtPRevS (const gp_Pnt& theP,
|
||||
const Handle(Adaptor3d_HSurfaceOfRevolution)& theS,
|
||||
const Handle(GeomAdaptor_HSurfaceOfRevolution)& theS,
|
||||
const Standard_Real theTolU,
|
||||
const Standard_Real theTolV)
|
||||
{
|
||||
@@ -259,7 +259,7 @@ Extrema_ExtPRevS::Extrema_ExtPRevS (const gp_Pnt&
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void Extrema_ExtPRevS::Initialize (const Handle(Adaptor3d_HSurfaceOfRevolution)& theS,
|
||||
void Extrema_ExtPRevS::Initialize (const Handle(GeomAdaptor_HSurfaceOfRevolution)& theS,
|
||||
const Standard_Real theUmin,
|
||||
const Standard_Real theUsup,
|
||||
const Standard_Real theVmin,
|
||||
|
@@ -27,7 +27,7 @@
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Extrema_POnSurf.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
class Adaptor3d_HSurfaceOfRevolution;
|
||||
class GeomAdaptor_HSurfaceOfRevolution;
|
||||
class StdFail_NotDone;
|
||||
class Standard_OutOfRange;
|
||||
class gp_Pnt;
|
||||
@@ -50,13 +50,13 @@ public:
|
||||
|
||||
//! It calculates all the distances between a point
|
||||
//! from gp and a SurfacePtr from Adaptor3d.
|
||||
Standard_EXPORT Extrema_ExtPRevS(const gp_Pnt& P, const Handle(Adaptor3d_HSurfaceOfRevolution)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT Extrema_ExtPRevS(const gp_Pnt& P, const Handle(GeomAdaptor_HSurfaceOfRevolution)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
//! It calculates all the distances between a point
|
||||
//! from gp and a SurfacePtr from Adaptor3d.
|
||||
Standard_EXPORT Extrema_ExtPRevS(const gp_Pnt& P, const Handle(Adaptor3d_HSurfaceOfRevolution)& S, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT Extrema_ExtPRevS(const gp_Pnt& P, const Handle(GeomAdaptor_HSurfaceOfRevolution)& S, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
Standard_EXPORT void Initialize (const Handle(Adaptor3d_HSurfaceOfRevolution)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
Standard_EXPORT void Initialize (const Handle(GeomAdaptor_HSurfaceOfRevolution)& S, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV);
|
||||
|
||||
Standard_EXPORT void Perform (const gp_Pnt& P);
|
||||
|
||||
@@ -85,7 +85,7 @@ protected:
|
||||
private:
|
||||
|
||||
|
||||
Handle(Adaptor3d_HSurfaceOfRevolution) myS;
|
||||
Handle(GeomAdaptor_HSurfaceOfRevolution) myS;
|
||||
Standard_Real myvinf;
|
||||
Standard_Real myvsup;
|
||||
Standard_Real mytolv;
|
||||
|
@@ -14,8 +14,8 @@
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
#include <Adaptor3d_HSurfaceOfLinearExtrusion.hxx>
|
||||
#include <Adaptor3d_HSurfaceOfRevolution.hxx>
|
||||
#include <GeomAdaptor_HSurfaceOfLinearExtrusion.hxx>
|
||||
#include <GeomAdaptor_HSurfaceOfRevolution.hxx>
|
||||
#include <Adaptor3d_Surface.hxx>
|
||||
#include <ElCLib.hxx>
|
||||
#include <Extrema_ExtPExtS.hxx>
|
||||
@@ -289,8 +289,8 @@ void Extrema_ExtPS::Perform(const gp_Pnt& thePoint)
|
||||
{
|
||||
if (myExtPExtS.IsNull())
|
||||
{
|
||||
Handle(Adaptor3d_HSurfaceOfLinearExtrusion) aS (new Adaptor3d_HSurfaceOfLinearExtrusion (
|
||||
Adaptor3d_SurfaceOfLinearExtrusion (myS->BasisCurve(), myS->Direction())));
|
||||
Handle(GeomAdaptor_HSurfaceOfLinearExtrusion) aS (new GeomAdaptor_HSurfaceOfLinearExtrusion (
|
||||
GeomAdaptor_SurfaceOfLinearExtrusion (myS->BasisCurve(), myS->Direction())));
|
||||
|
||||
myExtPExtS = new Extrema_ExtPExtS (thePoint, aS, myuinf, myusup, myvinf, myvsup, mytolu, mytolv);
|
||||
}
|
||||
@@ -315,8 +315,8 @@ void Extrema_ExtPS::Perform(const gp_Pnt& thePoint)
|
||||
{
|
||||
if (myExtPRevS.IsNull())
|
||||
{
|
||||
Handle(Adaptor3d_HSurfaceOfRevolution) aS (new Adaptor3d_HSurfaceOfRevolution (
|
||||
Adaptor3d_SurfaceOfRevolution (myS->BasisCurve(), myS->AxeOfRevolution())));
|
||||
Handle(GeomAdaptor_HSurfaceOfRevolution) aS (new GeomAdaptor_HSurfaceOfRevolution (
|
||||
GeomAdaptor_SurfaceOfRevolution (myS->BasisCurve(), myS->AxeOfRevolution())));
|
||||
|
||||
myExtPRevS = new Extrema_ExtPRevS (thePoint, aS, myuinf, myusup, myvinf, myvsup, mytolu, mytolv);
|
||||
}
|
||||
|
Reference in New Issue
Block a user