// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
-#ifndef DEB
-#define No_Standard_RangeError
-#define No_Standard_OutOfRange
-#endif
+//#ifndef DEB
+//#define No_Standard_RangeError
+//#define No_Standard_OutOfRange
+//#endif
#define TOLTANGENCY 0.00000001
-#define TOLERANCE_ANGULAIRE 0.00000001
+#define TOLERANCE_ANGULAIRE 1.e-12//0.00000001
#define TOLERANCE 0.00000001
#define NBSAMPLESONCIRCLE 32
#include <Extrema_ExtElC.hxx>
#include <Extrema_POnCurv.hxx>
-#if 0
-//-- jgv patch (from)
-#include <Extrema_ExtPS.hxx>
-//-- jgv patch (to)
-#endif
+
#include <ProjLib_Plane.hxx>
#include <IntAna2d_AnaIntersection.hxx>
#include <Adaptor3d_HCurve.hxx>
#include <Adaptor3d_HSurface.hxx>
-#if 0
-//-- jgv patch (from)
-#include <BndLib_Add3dCurve.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <Geom_Line.hxx>
-#include <Geom_Circle.hxx>
-#include <Geom_Ellipse.hxx>
-#include <Geom_Hyperbola.hxx>
-#include <Geom_Parabola.hxx>
-#include <Geom_TrimmedCurve.hxx>
-#include <GeomAdaptor_Surface.hxx>
-#include <Geom_Plane.hxx>
-#include <Geom_CylindricalSurface.hxx>
-#include <Geom_ConicalSurface.hxx>
-#include <Geom_ToroidalSurface.hxx>
-#include <Geom_SphericalSurface.hxx>
-#include <Geom_SurfaceOfRevolution.hxx>
-#include <Geom_SurfaceOfLinearExtrusion.hxx>
-#include <Geom_OffsetSurface.hxx>
-#include <Geom_RectangularTrimmedSurface.hxx>
-//-- jgv patch (to)
-#endif
#include <TColgp_Array2OfPnt.hxx>
#include <TColStd_HArray1OfReal.hxx>
#include <Adaptor3d_TopolTool.hxx>
#include <ElCLib.hxx>
-//================================================================================
-static void EstLimForInfExtr(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Boolean IsOffSurf,
- const Standard_Integer nbsu,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection);
-
-//================================================================================
-static void EstLimForInfRevl(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection);
-
-//================================================================================
-static void EstLimForInfOffs(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Integer nbsu,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection);
-
-//================================================================================
-static void EstLimForInfSurf(Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new);
-
-//================================================================================
-static void SectionPointToParameters(const Intf_SectionPoint& Sp,
- const IntCurveSurface_ThePolyhedron& Surf,
- const IntCurveSurface_ThePolygon& Curv,
- Standard_Real& u,
- Standard_Real& v,
- Standard_Real& w);
-//================================================================================
-static void IntCurveSurface_ComputeTransitions(const TheCurve& curve,
- const Standard_Real w,
- IntCurveSurface_TransitionOnCurve& TransOnCurve,
- const TheSurface& surface,
- const Standard_Real u,
- const Standard_Real v);
-//================================================================================
-static void IntCurveSurface_ComputeParamsOnQuadric(const TheSurface& surface,
- const gp_Pnt& P,
- Standard_Real& u,
- Standard_Real& v);
-//================================================================================
-#if 0
-static Handle(Geom_Curve) GetCurve(const Handle(Adaptor3d_HCurve) AdCurve);
-//================================================================================
-static Handle(Geom_Surface) GetSurface(const Handle(Adaptor3d_HSurface) AdSurface);
-#endif
-//================================================================================
-//==
-IntCurveSurface_Inter::IntCurveSurface_Inter() {
-}
+static
+ void EstLimForInfExtr(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Boolean IsOffSurf,
+ const Standard_Integer nbsu,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection);
+
+static
+ void EstLimForInfRevl(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection);
+
+static
+ void EstLimForInfOffs(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Integer nbsu,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection);
+
+static
+ void EstLimForInfSurf(Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new);
+
+static
+ void SectionPointToParameters(const Intf_SectionPoint& Sp,
+ const IntCurveSurface_ThePolyhedron& Surf,
+ const IntCurveSurface_ThePolygon& Curv,
+ Standard_Real& u,
+ Standard_Real& v,
+ Standard_Real& w);
+
+static
+ void IntCurveSurface_ComputeTransitions(const TheCurve& curve,
+ const Standard_Real w,
+ IntCurveSurface_TransitionOnCurve& TransOnCurve,
+ const TheSurface& surface,
+ const Standard_Real u,
+ const Standard_Real v);
+
+static
+ void IntCurveSurface_ComputeParamsOnQuadric(const TheSurface& surface,
+ const gp_Pnt& P,
+ Standard_Real& u,
+ Standard_Real& v);
+
+static
+ void ProjectIntersectAndEstLim(const gp_Lin& theLine,
+ const gp_Pln& thePln,
+ const ProjLib_Plane& theBasCurvProj,
+ Standard_Real& theVmin,
+ Standard_Real& theVmax,
+ Standard_Boolean& theNoIntersection);
-static Standard_Boolean DoTrim(const TheCurve& curve,
- const TheSurface& surface)
-{
- Standard_Boolean isAnaCurve = Standard_False, isAnaSurface = Standard_False;
- GeomAbs_CurveType CurveType = TheCurveTool::GetType(curve);
- switch (CurveType) {
- case GeomAbs_Line:
- case GeomAbs_Circle:
- case GeomAbs_Ellipse:
- case GeomAbs_Hyperbola:
- case GeomAbs_Parabola: isAnaCurve = Standard_True; break;
- default: break;
- }
- GeomAbs_SurfaceType SurfaceType = TheSurfaceTool::GetType(surface);
- switch (SurfaceType) {
- case GeomAbs_Plane:
- case GeomAbs_Cylinder:
- case GeomAbs_Cone:
- case GeomAbs_Sphere:
- case GeomAbs_Torus: isAnaSurface = Standard_True; break;
- default: break;
- }
- Standard_Boolean result = (isAnaCurve && isAnaSurface) ? Standard_False : Standard_True;
- if(result) {
- Standard_Boolean isUClosed = (TheSurfaceTool::IsUClosed(surface) || TheSurfaceTool::IsUPeriodic(surface));
- Standard_Boolean isVClosed = (TheSurfaceTool::IsVClosed(surface) || TheSurfaceTool::IsVPeriodic(surface));
- if(isUClosed && isVClosed)
- result = Standard_False;
- }
- return result;
+//=======================================================================
+//function : IntCurveSurface_Inter
+//purpose :
+//=======================================================================
+IntCurveSurface_Inter::IntCurveSurface_Inter()
+{
}
-
-// modified by NIZHNY-MKK Tue Jul 26 14:41:59 2005
-// static void DoSurface(const TheSurface& surface,
+//=======================================================================
+//function : DoSurface
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::DoSurface(const TheSurface& surface,
const Standard_Real u0,
const Standard_Real u1,
gap = Max(Ures,Vres);
}
-static void DoCurve(const TheCurve& curve,
- Bnd_Box& boxCurve)
-{
- Standard_Real CF = TheCurveTool::FirstParameter(curve);
- Standard_Real CL = TheCurveTool::LastParameter(curve);
- Standard_Real C = 0., dC = fabs(CL-CF)/50.;
- Standard_Integer iC = 0;
- gp_Pnt aPnt;
-
- for(iC = 0; iC < 50; iC++) {
- if(iC == 0)
- C = CF;
- else if(iC == 49)
- C = CL;
- else
- C = CF + dC *((Standard_Real)iC);
-
- TheCurveTool::D0(curve,C,aPnt);
- boxCurve.Add(aPnt);
- }
-}
-static void DoCommon(TColStd_Array1OfReal& Coords,
- Standard_Real& Cmin,
- Standard_Real& Cmax)
-{
- Standard_Integer i = 0, j = 0;
- for(i = 1; i <= 4; i++) {
- for(j = i+1; j <= 4; j++) {
- if(Coords(j) > Coords(i)) {
- Standard_Real c = Coords(i);
- Coords.SetValue(i,Coords(j));
- Coords.SetValue(j,c);
- }
- }
- }
- Cmax = Coords(2);
- Cmin = Coords(3);
-}
-
-static void DoCommonBox(const Bnd_Box& boxSurface,
- const Bnd_Box& boxCurve,
- TColStd_Array1OfReal& X,
- TColStd_Array1OfReal& Y,
- TColStd_Array1OfReal& Z)
-{
- Standard_Real SBXmin = 0., SBYmin = 0., SBZmin = 0.;
- Standard_Real SBXmax = 0., SBYmax = 0., SBZmax = 0.;
- boxSurface.Get(SBXmin,SBYmin,SBZmin,SBXmax,SBYmax,SBZmax);
-
- Standard_Real CBXmin = 0., CBYmin = 0., CBZmin = 0.;
- Standard_Real CBXmax = 0., CBYmax = 0., CBZmax = 0.;
- boxCurve.Get(CBXmin,CBYmin,CBZmin,CBXmax,CBYmax,CBZmax);
-
- TColStd_Array1OfReal Coord(1,4);
-
- Coord(1) = SBXmin; Coord(2) = SBXmax; Coord(3) = CBXmin; Coord(4) = CBXmax;
- Standard_Real CXmin = SBXmin, CXmax = SBXmax;
- DoCommon(Coord,CXmin,CXmax);
-
- Coord(1) = SBYmin; Coord(2) = SBYmax; Coord(3) = CBYmin; Coord(4) = CBYmax;
- Standard_Real CYmin = SBYmin, CYmax = SBYmax;
- DoCommon(Coord,CYmin,CYmax);
-
- Coord(1) = SBZmin; Coord(2) = SBZmax; Coord(3) = CBZmin; Coord(4) = CBZmax;
- Standard_Real CZmin = SBZmin, CZmax = SBZmax;
- DoCommon(Coord,CZmin,CZmax);
-
- X.SetValue(1,CXmin); X.SetValue(2,CXmax);
- Y.SetValue(1,CYmin); Y.SetValue(2,CYmax);
- Z.SetValue(1,CZmin); Z.SetValue(2,CZmax);
-}
-
-// modified by NIZHNY-MKK Tue Jul 26 14:41:42 2005
+//=======================================================================
+//function : DoNewBounds
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::DoNewBounds(
-// static void DoNewBounds(
const TheSurface& surface,
const Standard_Real u0,
const Standard_Real u1,
}
}
-//================================================================================
-//== P e r f o r m g e n e r a l
-//==
-//== Decompose la surface si besoin est
-//================================================================================
+//=======================================================================
+//function : Perform
+//purpose : Decompose la surface si besoin est
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const TheSurface& surface) {
ResetFields();
done = Standard_True;
Standard_Integer NbUOnS = TheSurfaceTool::NbUIntervals(surface,GeomAbs_C2);
Standard_Integer NbVOnS = TheSurfaceTool::NbVIntervals(surface,GeomAbs_C2);
-#ifdef DEB
Standard_Integer NbOnC = TheCurveTool::NbIntervals(curve,GeomAbs_C2);
-#else
- TheCurveTool::NbIntervals(curve,GeomAbs_C2);
-#endif
Standard_Real U0,U1,V0,V1;
if(NbUOnS > 1) {
U0 = TheSurfaceTool::FirstUParameter(surface);
U1 = TheSurfaceTool::LastUParameter(surface);
- //-- ofv: begin
- Standard_Boolean doTrim = DoTrim(curve,surface);
- if(doTrim) {
- TColgp_Array2OfPnt aPS(1,50,1,50);
- Bnd_Box SB;
- Standard_Real g = 1.e-7;
- DoSurface(surface,U0,U1,V0,V1,aPS,SB,g);
- Bnd_Box CB;
- DoCurve(curve,CB);
- CB.Enlarge(g);
- TColStd_Array1OfReal X(1,2), Y(1,2), Z(1,2);
- DoCommonBox(SB,CB,X,Y,Z);
- TColStd_Array1OfReal B(1,4);
- DoNewBounds(surface,U0,U1,V0,V1,aPS,X,Y,Z,B);
- U0 = B(1); U1 = B(2); V0 = B(3); V1 = B(4);
- }
- //-- ofv: end
#if 0
//-- jgv patch (from)
Perform(curve,surface,U0,V0,U1,V1);
}
}
-//================================================================================
-//================================================================================
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const TheSurface& surface,
const Standard_Real U1,const Standard_Real V1,
}
}
}
-//================================================================================
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface) {
IntCurveSurface_ThePolyhedron polyhedron(surface,nbsu,nbsv,u1,v1,u2,v2);
Perform(curve,polygon,surface,polyhedron);
}
-//================================================================================
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const TheSurface& surface,
const IntCurveSurface_ThePolyhedron& polyhedron) {
IntCurveSurface_ThePolygon polygon(curve,TheCurveTool::NbSamples(curve,u1,u2));
Perform(curve,polygon,surface,polyhedron);
}
-//================================================================================
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface,
InternalPerform(curve,polygon,surface,polyhedron,u1,v1,u2,v2);
}
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::Perform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface,
v2 = TheSurfaceTool::LastVParameter(surface);
InternalPerform(curve,polygon,surface,polyhedron,u1,v1,u2,v2,BndBSB);
}
-//================================================================================
-//== C a l c u l d u p o i n t a p p r o c h e ==
-//== p u i s d u p o i n t E x a c t ==
-//================================================================================
+//=======================================================================
+//function : InternalPerform
+//purpose : C a l c u l d u p o i n t a p p r o c h e
+//== p u i s d u p o i n t E x a c t
+//=======================================================================
void IntCurveSurface_Inter::InternalPerform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface,
}
}
+//=======================================================================
+//function : InternalPerform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::InternalPerform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface,
delete [] TabU;
}
}
-//================================================================================
+//=======================================================================
+//function : InternalPerformCurveQuadric
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::InternalPerformCurveQuadric(const TheCurve& curve,
const TheSurface& surface) {
IntCurveSurface_TheQuadCurvExactInter QuadCurv(surface,curve);
}
}
-//================================================================================
+//=======================================================================
+//function : InternalPerform
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::InternalPerform(const TheCurve& curve,
const IntCurveSurface_ThePolygon& polygon,
const TheSurface& surface,
}
} //-- Fin : la Surface est une quadrique
}
-//================================================================================
+//=======================================================================
+//function : PerformConicSurf
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::PerformConicSurf(const gp_Lin& Line,
const TheCurve& curve,
const TheSurface& surface,
}
}
}
-//================================================================================
+//=======================================================================
+//function : PerformConicSurf
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::PerformConicSurf(const gp_Circ& Circle,
const TheCurve& curve,
const TheSurface& surface,
}
}
}
-//================================================================================
+//=======================================================================
+//function : PerformConicSurf
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::PerformConicSurf(const gp_Elips& Ellipse,
const TheCurve& curve,
const TheSurface& surface,
}
}
}
-//================================================================================
+//=======================================================================
+//function : PerformConicSurf
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::PerformConicSurf(const gp_Parab& Parab,
const TheCurve& curve,
const TheSurface& surface,
}
}
}
-//================================================================================
+//=======================================================================
+//function : PerformConicSurf
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::PerformConicSurf(const gp_Hypr& Hypr,
const TheCurve& curve,
const TheSurface& surface,
}
}
}
-//================================================================================
+//=======================================================================
+//function : AppendIntAna
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::AppendIntAna(const TheCurve& curve,
const TheSurface& surface,
const IntAna_IntConicQuad& intana_ConicQuad) {
//-- cout<<" IntAna Conic Quad Not Done "<<endl;
}
}
-//================================================================================
+//=======================================================================
+//function : AppendPoint
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::AppendPoint(const TheCurve& curve,
const Standard_Real lw,
const TheSurface& surface,
}
-//================================================================================
+//=======================================================================
+//function : AppendSegment
+//purpose :
+//=======================================================================
void IntCurveSurface_Inter::AppendSegment(const TheCurve& ,
const Standard_Real ,
const Standard_Real ,
const TheSurface& ) {
- cout<<" !!! Not Yet Implemented IntCurveSurface_Inter::Append(const IntCurveSurf ...)"<<endl;
+ //cout<<" !!! Not Yet Implemented
+ //IntCurveSurface_Inter::Append(const IntCurveSurf ...)"<<endl;
}
-//================================================================================
-//== P o i n t d i n t e r f e r e n c e - - > U , V e t W ==
-//================================================================================
+//=======================================================================
+//function : SectionPointToParameters
+//purpose : P o i n t d i n t e r f e r e n c e - - >
+// U , V e t W
+//=======================================================================
void SectionPointToParameters(const Intf_SectionPoint& Sp,
const IntCurveSurface_ThePolyhedron& Polyhedron,
const IntCurveSurface_ThePolygon& Polygon,
U = u1;
V = v1;
}
-//================================================================================
+//=======================================================================
+//function : IntCurveSurface_ComputeTransitions
+//purpose :
+//=======================================================================
void IntCurveSurface_ComputeTransitions(const TheCurve& curve,
const Standard_Real w,
IntCurveSurface_TransitionOnCurve& TransOnCurve,
TransOnCurve = IntCurveSurface_Tangent;
}
}
-//================================================================================
+//=======================================================================
+//function : IntCurveSurface_ComputeParamsOnQuadric
+//purpose :
+//=======================================================================
void IntCurveSurface_ComputeParamsOnQuadric(const TheSurface& surface,
const gp_Pnt& P,
Standard_Real& u,
#endif
}
}
-//================================================================================
-
-
-
-
-/*
-
- Standard_Real u1,v1,u2,v2;
- u1 = TheSurfaceTool::FirstUParameter(surface);
- v1 = TheSurfaceTool::FirstVParameter(surface);
- u2 = TheSurfaceTool::LastUParameter(surface);
- v2 = TheSurfaceTool::LastVParameter(surface);
- Standard_Integer nbsu,nbsv;
- nbsu = TheSurfaceTool::NbSamplesU(surface,u1,u2);
- nbsv = TheSurfaceTool::NbSamplesV(surface,v1,v2);
- IntCurveSurface_ThePolyhedron polyhedron(surface,nbsu,nbsv,u1,v1,u2,v2);
-
-*/
-//====================================================================================
-// Estimation of limits for infinite surfaces
-//====================================================================================
-
-//================================================================================
-static void EstLimForInfExtr(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Boolean IsOffSurf,
- const Standard_Integer nbsu,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection)
+//=======================================================================
+//function : EstLimForInfExtr
+//purpose : Estimation of limits for infinite surfaces
+//=======================================================================
+void EstLimForInfExtr(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Boolean IsOffSurf,
+ const Standard_Integer nbsu,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection)
{
return;
}
-
-//================================================================================
//=======================================================================
//function : ProjectIntersectAndEstLim
//purpose : project <theLine> and it's X-axe symmetric line to <thePln> and
// <theBasCurvProj>.
// Is called from EstLimForInfRevl()
//=======================================================================
-
-static void ProjectIntersectAndEstLim(const gp_Lin& theLine,
- const gp_Pln& thePln,
- const ProjLib_Plane& theBasCurvProj,
- Standard_Real& theVmin,
- Standard_Real& theVmax,
- Standard_Boolean& theNoIntersection)
+void ProjectIntersectAndEstLim(const gp_Lin& theLine,
+ const gp_Pln& thePln,
+ const ProjLib_Plane& theBasCurvProj,
+ Standard_Real& theVmin,
+ Standard_Real& theVmax,
+ Standard_Boolean& theNoIntersection)
{
ProjLib_Plane aLineProj( thePln, theLine );
if (!aLineProj.IsDone()) {
#ifdef DEB
- cout
- << "Info: IntCurveSurface_Inter::ProjectIntersectAndEstLim(), !aLineProj.IsDone()"
- << endl;
+ cout
+ << "Info: IntCurveSurface_Inter::ProjectIntersectAndEstLim(), !aLineProj.IsDone()"
+ << endl;
#endif
return;
}
// Algo: intersect projections of Line and basis curve on the
// plane passing through revolution axe
//=======================================================================
-
-static void EstLimForInfRevl(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection)
+void EstLimForInfRevl(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection)
{
NoIntersection = Standard_False;
return;
}
-//================================================================================
-static void EstLimForInfOffs(const gp_Lin& Line,
- const TheSurface& surface,
- const Standard_Integer nbsu,
- const Standard_Boolean U1inf,
- const Standard_Boolean U2inf,
- const Standard_Boolean V1inf,
- const Standard_Boolean V2inf,
- Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new,
- Standard_Boolean& NoIntersection)
+//=======================================================================
+//function : EstLimForInfOffs
+//purpose :
+//=======================================================================
+void EstLimForInfOffs(const gp_Lin& Line,
+ const TheSurface& surface,
+ const Standard_Integer nbsu,
+ const Standard_Boolean U1inf,
+ const Standard_Boolean U2inf,
+ const Standard_Boolean V1inf,
+ const Standard_Boolean V2inf,
+ Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new,
+ Standard_Boolean& NoIntersection)
{
NoIntersection = Standard_False;
V1new = Max(V1new, -1.e10);
V2new = Min(V2new, 1.e10);
-
}
-
}
-
-//================================================================================
-static void EstLimForInfSurf(Standard_Real& U1new,
- Standard_Real& U2new,
- Standard_Real& V1new,
- Standard_Real& V2new)
+//=======================================================================
+//function : EstLimForInfSurf
+//purpose :
+//=======================================================================
+void EstLimForInfSurf(Standard_Real& U1new,
+ Standard_Real& U2new,
+ Standard_Real& V1new,
+ Standard_Real& V2new)
{
U1new = Max(U1new, -1.e10);
U2new = Min(U2new, 1.e10);
V1new = Max(V1new, -1.e10);
V2new = Min(V2new, 1.e10);
}
-
-#if 0
-//-- jgv patch (from)
-static Handle(Geom_Curve) GetCurve(const Handle(Adaptor3d_HCurve) AdCurve)
-{
- Handle(Geom_Curve) theCurve;
- GeomAbs_CurveType CurveType = AdCurve->GetType();
- switch (CurveType)
- {
- case GeomAbs_Line:
- theCurve = new Geom_Line( AdCurve->Line() );
- break;
- case GeomAbs_Circle:
- theCurve = new Geom_Circle( AdCurve->Circle() );
- break;
- case GeomAbs_Ellipse:
- theCurve = new Geom_Ellipse( AdCurve->Ellipse() );
- break;
- case GeomAbs_Hyperbola:
- theCurve = new Geom_Hyperbola( AdCurve->Hyperbola() );
- break;
- case GeomAbs_Parabola:
- theCurve = new Geom_Parabola( AdCurve->Parabola() );
- break;
- case GeomAbs_BezierCurve:
- theCurve = AdCurve->Bezier();
- break;
- case GeomAbs_BSplineCurve:
- theCurve = AdCurve->BSpline();
- break;
- }
- if (!theCurve.IsNull())
- {
- Standard_Real f = AdCurve->FirstParameter();
- Standard_Real l = AdCurve->LastParameter();
- theCurve = new Geom_TrimmedCurve( theCurve, f, l );
- }
- return theCurve;
-}
-
-static Handle(Geom_Surface) GetSurface(const Handle(Adaptor3d_HSurface) AdSurface)
-{
- Handle(Geom_Surface) theSurface;
- GeomAbs_SurfaceType SurfaceType = AdSurface->GetType();
- switch (SurfaceType)
- {
- case GeomAbs_Plane:
- theSurface = new Geom_Plane( AdSurface->Plane() );
- break;
- case GeomAbs_Cylinder:
- theSurface = new Geom_CylindricalSurface( AdSurface->Cylinder() );
- break;
- case GeomAbs_Cone:
- theSurface = new Geom_ConicalSurface( AdSurface->Cone() );
- break;
- case GeomAbs_Torus:
- theSurface = new Geom_ToroidalSurface( AdSurface->Torus() );
- break;
- case GeomAbs_Sphere:
- theSurface = new Geom_SphericalSurface( AdSurface->Sphere() );
- break;
- case GeomAbs_BezierSurface:
- theSurface = AdSurface->Bezier();
- break;
- case GeomAbs_BSplineSurface:
- theSurface = AdSurface->BSpline();
- break;
- case GeomAbs_SurfaceOfRevolution:
- {
- gp_Ax1 Axis = AdSurface->AxeOfRevolution();
- Handle(Adaptor3d_HCurve) AdBC = AdSurface->BasisCurve();
- Handle(Geom_Curve) BC = GetCurve(AdBC);
- if (!BC.IsNull())
- theSurface = new Geom_SurfaceOfRevolution( BC, Axis );
- break;
- }
- case GeomAbs_SurfaceOfExtrusion:
- {
- gp_Dir Direction = AdSurface->Direction();
- Handle(Adaptor3d_HCurve) AdBC = AdSurface->BasisCurve();
- Handle(Geom_Curve) BC = GetCurve(AdBC);
- if (!BC.IsNull())
- theSurface = new Geom_SurfaceOfLinearExtrusion( BC, Direction );
- break;
- }
- }
- if (!theSurface.IsNull())
- {
- Standard_Real uf = AdSurface->FirstUParameter();
- Standard_Real ul = AdSurface->LastUParameter();
- Standard_Real vf = AdSurface->FirstVParameter();
- Standard_Real vl = AdSurface->LastVParameter();
- theSurface = new Geom_RectangularTrimmedSurface( theSurface, uf, ul, vf, vl );
- }
- return theSurface;
-}
-//-- jgv patch (to)
-#endif