1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

Adaptor3d_HSurfaceTool

BRepApprox_SurfaceTool
HLRBRep_SurfaceTool
This commit is contained in:
nbv
2018-01-16 12:10:25 +03:00
parent 1fcb1314a5
commit 24a9d1a425
9 changed files with 35 additions and 48 deletions

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -829,7 +829,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1,
if(MyImplicitFirst) {
if(u2<binfu-0.0000000001) {
if(ThePSurfaceTool::IsUPeriodic(aPSurf)) {
if(ThePSurfaceTool::IsUPeriodic333(aPSurf)) {
Standard_Real d = ThePSurfaceTool::UPeriod(aPSurf);
do { TranslationU+=d; } while(u2+TranslationU < binfu);
}
@@ -837,7 +837,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1,
return(Standard_False);
}
else if(u2>bsupu+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(v2<binfv-0.0000000001) {
if(ThePSurfaceTool::IsVPeriodic(aPSurf)) {
if(ThePSurfaceTool::IsVPeriodic333(aPSurf)) {
Standard_Real d = ThePSurfaceTool::VPeriod(aPSurf);
do { TranslationV+=d; } while(v2+TranslationV < binfv);
}
@@ -853,7 +853,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1,
return(Standard_False);
}
else if(v2>bsupv+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(u1<binfu-0.0000000001) {
if(ThePSurfaceTool::IsUPeriodic(aPSurf)) {
if(ThePSurfaceTool::IsUPeriodic333(aPSurf)) {
Standard_Real d = ThePSurfaceTool::UPeriod(aPSurf);
do { TranslationU+=d; } while(u1+TranslationU < binfu);
}
@@ -873,7 +873,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1,
return(Standard_False);
}
else if(u1>bsupu+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(v1<binfv-0.0000000001) {
if(ThePSurfaceTool::IsVPeriodic(aPSurf)) {
if(ThePSurfaceTool::IsVPeriodic333(aPSurf)) {
Standard_Real d = ThePSurfaceTool::VPeriod(aPSurf);
do { TranslationV+=d; } while(v1+TranslationV < binfv);
}
@@ -889,7 +889,7 @@ ApproxInt_ImpPrmSvSurfaces::FillInitialVectorOfSolution(const Standard_Real u1,
return(Standard_False);
}
else if(v1>bsupv+0.0000000001) {
if(ThePSurfaceTool::IsVPeriodic(aPSurf)) {
if(ThePSurfaceTool::IsVPeriodic333(aPSurf)) {
Standard_Real d = ThePSurfaceTool::VPeriod(aPSurf);
do { TranslationV-=d; } while(v1+TranslationV > bsupv);
}

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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));
}

View File

@@ -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<Adaptor3d_HSurfaceTool::UPeriod(Caro1)) {
t=0.5*(Adaptor3d_HSurfaceTool::UPeriod(Caro1)-t);
@@ -279,10 +276,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
if(Adaptor3d_HSurfaceTool::IsVPeriodic(Caro1)==Standard_False) {
//VM1+=KELARG*pasuv[1]; Vm1-=KELARG*pasuv[1];
}
else {
if(Adaptor3d_HSurfaceTool::IsVPeriodic333(Caro1)) {
Standard_Real t = VM1-Vm1;
if(t<Adaptor3d_HSurfaceTool::VPeriod(Caro1)) {
t=0.5*(Adaptor3d_HSurfaceTool::VPeriod(Caro1)-t);
@@ -291,10 +285,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
if(Adaptor3d_HSurfaceTool::IsUPeriodic(Caro2)==Standard_False) {
//UM2+=KELARG*pasuv[2]; Um2-=KELARG*pasuv[2];
}
else {
if(Adaptor3d_HSurfaceTool::IsUPeriodic333(Caro2)){
Standard_Real t = UM2-Um2;
if(t<Adaptor3d_HSurfaceTool::UPeriod(Caro2)) {
t=0.5*(Adaptor3d_HSurfaceTool::UPeriod(Caro2)-t);
@@ -303,10 +294,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
if(Adaptor3d_HSurfaceTool::IsVPeriodic(Caro2)==Standard_False) {
//VM2+=KELARG*pasuv[3]; Vm2-=KELARG*pasuv[3];
}
else {
if(Adaptor3d_HSurfaceTool::IsVPeriodic333(Caro2)){
Standard_Real t = VM2-Vm2;
if(t<Adaptor3d_HSurfaceTool::VPeriod(Caro2)) {
t=0.5*(Adaptor3d_HSurfaceTool::VPeriod(Caro2)-t);
@@ -423,7 +411,7 @@ STATIC_PRECEDENT_INFLEXION(0)
pasuv[2]=pasMax*Abs(UM2-Um2);
pasuv[3]=pasMax*Abs(VM2-Vm2);
//
if(Adaptor3d_HSurfaceTool::IsUPeriodic(Caro1)==Standard_False) {
if(Adaptor3d_HSurfaceTool::IsUPeriodic333(Caro1)==Standard_False) {
UM1+=KELARG*pasuv[0];
Um1-=KELARG*pasuv[0];
}
@@ -437,7 +425,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
//
if(Adaptor3d_HSurfaceTool::IsVPeriodic(Caro1)==Standard_False) {
if(Adaptor3d_HSurfaceTool::IsVPeriodic333(Caro1)==Standard_False) {
VM1+=KELARG*pasuv[1];
Vm1-=KELARG*pasuv[1];
}
@@ -450,7 +438,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
//
if(Adaptor3d_HSurfaceTool::IsUPeriodic(Caro2)==Standard_False) {
if(Adaptor3d_HSurfaceTool::IsUPeriodic333(Caro2)==Standard_False) {
UM2+=KELARG*pasuv[2];
Um2-=KELARG*pasuv[2];
}
@@ -464,7 +452,7 @@ STATIC_PRECEDENT_INFLEXION(0)
}
}
if(Adaptor3d_HSurfaceTool::IsVPeriodic(Caro2)==Standard_False) {
if(Adaptor3d_HSurfaceTool::IsVPeriodic333(Caro2)==Standard_False) {
VM2+=KELARG*pasuv[3];
Vm2-=KELARG*pasuv[3];
}