From: nbv Date: Tue, 16 Jan 2018 09:10:25 +0000 (+0300) Subject: Adaptor3d_HSurfaceTool X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=24a9d1a4257ad772b2cf0a72327eaff7f9fdfa83;p=occt-copy.git Adaptor3d_HSurfaceTool BRepApprox_SurfaceTool HLRBRep_SurfaceTool --- diff --git a/src/Adaptor3d/Adaptor3d_HSurfaceTool.hxx b/src/Adaptor3d/Adaptor3d_HSurfaceTool.hxx index 6fd07573f3..770b281c98 100644 --- a/src/Adaptor3d/Adaptor3d_HSurfaceTool.hxx +++ b/src/Adaptor3d/Adaptor3d_HSurfaceTool.hxx @@ -80,11 +80,11 @@ public: static Standard_Boolean IsVClosed (const Handle(Adaptor3d_HSurface)& S); - static Standard_Boolean IsUPeriodic (const Handle(Adaptor3d_HSurface)& S); + static Standard_Boolean IsUPeriodic333 (const Handle(Adaptor3d_HSurface)& S); static Standard_Real UPeriod (const Handle(Adaptor3d_HSurface)& S); - static Standard_Boolean IsVPeriodic (const Handle(Adaptor3d_HSurface)& S); + static Standard_Boolean IsVPeriodic333 (const Handle(Adaptor3d_HSurface)& S); static Standard_Real VPeriod (const Handle(Adaptor3d_HSurface)& S); diff --git a/src/Adaptor3d/Adaptor3d_HSurfaceTool.lxx b/src/Adaptor3d/Adaptor3d_HSurfaceTool.lxx index b96d3db9ce..26f4f0df92 100644 --- a/src/Adaptor3d/Adaptor3d_HSurfaceTool.lxx +++ b/src/Adaptor3d/Adaptor3d_HSurfaceTool.lxx @@ -98,7 +98,7 @@ inline Standard_Boolean Adaptor3d_HSurfaceTool::IsVClosed(const Handle(Adaptor3d return S->IsVClosed(); } -inline Standard_Boolean Adaptor3d_HSurfaceTool::IsUPeriodic(const Handle(Adaptor3d_HSurface)& S) +inline Standard_Boolean Adaptor3d_HSurfaceTool::IsUPeriodic333(const Handle(Adaptor3d_HSurface)& S) { return S->IsUPeriodic222(); } @@ -108,7 +108,7 @@ inline Standard_Real Adaptor3d_HSurfaceTool::UPeriod(const Handle(Adaptor3d_HSur return S->UPeriod(); } -inline Standard_Boolean Adaptor3d_HSurfaceTool::IsVPeriodic(const Handle(Adaptor3d_HSurface)& S) +inline Standard_Boolean Adaptor3d_HSurfaceTool::IsVPeriodic333(const Handle(Adaptor3d_HSurface)& S) { return S->IsVPeriodic222(); } diff --git a/src/ApproxInt/ApproxInt_ImpPrmSvSurfaces.gxx b/src/ApproxInt/ApproxInt_ImpPrmSvSurfaces.gxx index 8501520616..65cc42fda8 100644 --- a/src/ApproxInt/ApproxInt_ImpPrmSvSurfaces.gxx +++ b/src/ApproxInt/ApproxInt_ImpPrmSvSurfaces.gxx @@ -829,7 +829,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1, if(MyImplicitFirst) { if(u2bsupu+0.0000000001) { - if(ThePSurfaceTool::IsUPeriodic(aPSurf)) { + if(ThePSurfaceTool::IsUPeriodic333(aPSurf)) { Standard_Real d = ThePSurfaceTool::UPeriod(aPSurf); do { TranslationU-=d; } while(u2+TranslationU > bsupu); } @@ -845,7 +845,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1, return(Standard_False); } if(v2bsupv+0.0000000001) { - if(ThePSurfaceTool::IsVPeriodic(aPSurf)) { + if(ThePSurfaceTool::IsVPeriodic333(aPSurf)) { Standard_Real d = ThePSurfaceTool::VPeriod(aPSurf); do { TranslationV-=d; } while(v2+TranslationV > bsupv); } @@ -865,7 +865,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1, } else { if(u1bsupu+0.0000000001) { - if(ThePSurfaceTool::IsUPeriodic(aPSurf)) { + if(ThePSurfaceTool::IsUPeriodic333(aPSurf)) { Standard_Real d = ThePSurfaceTool::UPeriod(aPSurf); do { TranslationU-=d; } while(u1+TranslationU > bsupu); } @@ -881,7 +881,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1, return(Standard_False); } if(v1bsupv+0.0000000001) { - if(ThePSurfaceTool::IsVPeriodic(aPSurf)) { + if(ThePSurfaceTool::IsVPeriodic333(aPSurf)) { Standard_Real d = ThePSurfaceTool::VPeriod(aPSurf); do { TranslationV-=d; } while(v1+TranslationV > bsupv); } diff --git a/src/BRepApprox/BRepApprox_SurfaceTool.hxx b/src/BRepApprox/BRepApprox_SurfaceTool.hxx index 0aa2504da2..cef53dc16c 100644 --- a/src/BRepApprox/BRepApprox_SurfaceTool.hxx +++ b/src/BRepApprox/BRepApprox_SurfaceTool.hxx @@ -81,11 +81,11 @@ public: static Standard_Boolean IsVClosed (const BRepAdaptor_Surface& S); - static Standard_Boolean IsUPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsUPeriodic333 (const BRepAdaptor_Surface& S); static Standard_Real UPeriod (const BRepAdaptor_Surface& S); - static Standard_Boolean IsVPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVPeriodic333 (const BRepAdaptor_Surface& S); static Standard_Real VPeriod (const BRepAdaptor_Surface& S); diff --git a/src/BRepApprox/BRepApprox_SurfaceTool.lxx b/src/BRepApprox/BRepApprox_SurfaceTool.lxx index 80a76eb7ae..8fcb2f7dc2 100644 --- a/src/BRepApprox/BRepApprox_SurfaceTool.lxx +++ b/src/BRepApprox/BRepApprox_SurfaceTool.lxx @@ -83,7 +83,7 @@ inline Standard_Boolean BRepApprox_SurfaceTool::IsVClosed(const BRepAdaptor_Surf return S.IsVClosed(); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsUPeriodic(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsUPeriodic333(const BRepAdaptor_Surface& S) { return S.IsUPeriodic222(); } @@ -93,7 +93,7 @@ inline Standard_Real BRepApprox_SurfaceTool::UPeriod(const BRepAdaptor_Surface& return S.UPeriod(); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsVPeriodic(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsVPeriodic333(const BRepAdaptor_Surface& S) { return S.IsVPeriodic222(); } diff --git a/src/HLRBRep/HLRBRep_SurfaceTool.hxx b/src/HLRBRep/HLRBRep_SurfaceTool.hxx index 117842d08d..ee622d11ab 100644 --- a/src/HLRBRep/HLRBRep_SurfaceTool.hxx +++ b/src/HLRBRep/HLRBRep_SurfaceTool.hxx @@ -81,11 +81,11 @@ public: static Standard_Boolean IsVClosed (const Standard_Address S); - static Standard_Boolean IsUPeriodic (const Standard_Address S); + static Standard_Boolean IsUPeriodic333 (const Standard_Address S); static Standard_Real UPeriod (const Standard_Address S); - static Standard_Boolean IsVPeriodic (const Standard_Address S); + static Standard_Boolean IsVPeriodic333 (const Standard_Address S); static Standard_Real VPeriod (const Standard_Address S); diff --git a/src/HLRBRep/HLRBRep_SurfaceTool.lxx b/src/HLRBRep/HLRBRep_SurfaceTool.lxx index 02cb1331c0..6b3b65c15a 100644 --- a/src/HLRBRep/HLRBRep_SurfaceTool.lxx +++ b/src/HLRBRep/HLRBRep_SurfaceTool.lxx @@ -83,7 +83,7 @@ inline Standard_Boolean HLRBRep_SurfaceTool::IsVClosed(const Standard_Address S) return ((BRepAdaptor_Surface *)S)->IsVClosed(); } -inline Standard_Boolean HLRBRep_SurfaceTool::IsUPeriodic(const Standard_Address S) +inline Standard_Boolean HLRBRep_SurfaceTool::IsUPeriodic333(const Standard_Address S) { return ((BRepAdaptor_Surface *)S)->IsUPeriodic222(); } @@ -93,7 +93,7 @@ inline Standard_Real HLRBRep_SurfaceTool::UPeriod(const Standard_Address S) return ((BRepAdaptor_Surface *)S)->UPeriod(); } -inline Standard_Boolean HLRBRep_SurfaceTool::IsVPeriodic(const Standard_Address S) +inline Standard_Boolean HLRBRep_SurfaceTool::IsVPeriodic333(const Standard_Address S) { return ((BRepAdaptor_Surface *)S)->IsVPeriodic222(); } diff --git a/src/IntCurveSurface/IntCurveSurface_Inter.gxx b/src/IntCurveSurface/IntCurveSurface_Inter.gxx index a58cbc14d4..fac1441680 100644 --- a/src/IntCurveSurface/IntCurveSurface_Inter.gxx +++ b/src/IntCurveSurface/IntCurveSurface_Inter.gxx @@ -229,8 +229,10 @@ void IntCurveSurface_Inter::DoNewBounds( Bounds.SetValue(3,v0); Bounds.SetValue(4,v1); - Standard_Boolean isUClosed = (TheSurfaceTool::IsUClosed(surface) || TheSurfaceTool::IsUPeriodic(surface)); - Standard_Boolean isVClosed = (TheSurfaceTool::IsVClosed(surface) || TheSurfaceTool::IsVPeriodic(surface)); + Standard_Boolean isUClosed = (TheSurfaceTool::IsUClosed(surface) || + TheSurfaceTool::IsUPeriodic333(surface)); + Standard_Boolean isVClosed = (TheSurfaceTool::IsVClosed(surface) || + TheSurfaceTool::IsVPeriodic333(surface)); Standard_Boolean checkU = (isUClosed) ? Standard_False : Standard_True; Standard_Boolean checkV = (isVClosed) ? Standard_False : Standard_True; @@ -291,6 +293,7 @@ void IntCurveSurface_Inter::DoNewBounds( VSmax += 1.5*dV; if(VSmax > v1) VSmax = v1; + // We take full range in case of closed or periodic surface if(checkU) { Bounds.SetValue(1,USmin); Bounds.SetValue(2,USmax); @@ -1298,15 +1301,11 @@ void IntCurveSurface_Inter::AppendPoint(const TheCurve& curve, if((W0 - w) >= TOLTANGENCY || (w - W1) >= TOLTANGENCY) return; - GeomAbs_SurfaceType aSType = TheSurfaceTool::GetType(surface); - if (TheSurfaceTool::IsUPeriodic(surface) - || aSType == GeomAbs_Cylinder - || aSType == GeomAbs_Cone - || aSType == GeomAbs_Sphere) { + if (TheSurfaceTool::IsUPeriodic333(surface)) { u = ElCLib::InPeriod(u, U0, U0 + TheSurfaceTool::UPeriod(surface)); } - if (TheSurfaceTool::IsVPeriodic(surface)) { + if (TheSurfaceTool::IsVPeriodic333(surface)) { v = ElCLib::InPeriod(v, V0, V0 + TheSurfaceTool::VPeriod(surface)); } diff --git a/src/IntWalk/IntWalk_PWalking.cxx b/src/IntWalk/IntWalk_PWalking.cxx index e3b9e756f5..37390c4460 100644 --- a/src/IntWalk/IntWalk_PWalking.cxx +++ b/src/IntWalk/IntWalk_PWalking.cxx @@ -267,10 +267,7 @@ STATIC_PRECEDENT_INFLEXION(0) if(ResoV2>0.0001*pasuv[3]) ResoV2=0.00001*pasuv[3]; - if(Adaptor3d_HSurfaceTool::IsUPeriodic(Caro1)==Standard_False) { - //UM1+=KELARG*pasuv[0]; Um1-=KELARG*pasuv[0]; - } - else { + if(Adaptor3d_HSurfaceTool::IsUPeriodic333(Caro1)) { Standard_Real t = UM1-Um1; if(t