1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0026554: Error in IntPatch_PrmPrmIntersection: initial step for walking line is not related with actual tolerance

Test case for issue CR26554
Small corrections for issue CR26554
This commit is contained in:
jgv
2015-08-20 16:38:43 +03:00
committed by ski
parent e99a2eef31
commit 3e1b1da77c
5 changed files with 65 additions and 39 deletions

View File

@@ -48,9 +48,10 @@ void ComputePasInit(Standard_Real *pasuv,
Standard_Real _Vm1,Standard_Real _VM1,
Standard_Real _Um2,Standard_Real _UM2,
Standard_Real _Vm2,Standard_Real _VM2,
const Handle(Adaptor3d_HSurface)& ,
const Handle(Adaptor3d_HSurface)& ,
const Standard_Real Increment)
const Handle(Adaptor3d_HSurface)& Caro1,
const Handle(Adaptor3d_HSurface)& Caro2,
const Standard_Real Increment,
const Standard_Real tolconf)
{
Standard_Real du1=Abs(UM1-Um1);
Standard_Real dv1=Abs(VM1-Vm1);
@@ -74,6 +75,20 @@ void ComputePasInit(Standard_Real *pasuv,
pasuv[1]=Increment*dv1;
pasuv[2]=Increment*du2;
pasuv[3]=Increment*dv2;
Standard_Real ResoU1tol = Adaptor3d_HSurfaceTool::UResolution(Caro1, tolconf);
Standard_Real ResoV1tol = Adaptor3d_HSurfaceTool::VResolution(Caro1, tolconf);
Standard_Real ResoU2tol = Adaptor3d_HSurfaceTool::UResolution(Caro2, tolconf);
Standard_Real ResoV2tol = Adaptor3d_HSurfaceTool::VResolution(Caro2, tolconf);
if (pasuv[0] < 2*ResoU1tol)
pasuv[0] = 2*ResoU1tol;
if (pasuv[1] < 2*ResoV1tol)
pasuv[1] = 2*ResoV1tol;
if (pasuv[2] < 2*ResoU2tol)
pasuv[2] = 2*ResoU2tol;
if (pasuv[3] < 2*ResoV2tol)
pasuv[3] = 2*ResoV2tol;
}
//=======================================================================
@@ -703,7 +718,7 @@ void IntWalk_PWalking::Perform(const TColStd_Array1OfReal& ParDep,
const Standard_Real VLast2 = Adaptor3d_HSurfaceTool::LastVParameter (Caro2);
//
ComputePasInit(pasuv,u1min,u1max,v1min,v1max,u2min,u2max,v2min,v2max,
Um1,UM1,Vm1,VM1,Um2,UM2,Vm2,VM2,Caro1,Caro2,pasMax+pasMax);
Um1,UM1,Vm1,VM1,Um2,UM2,Vm2,VM2,Caro1,Caro2,pasMax+pasMax,tolconf);
//
if(pasuv[0]<100.0*ResoU1) {
pasuv[0]=100.0*ResoU1;