const Standard_Real theToler2D,
const Standard_Real thePeriod) // Period of parametric surface in direction which is perpendicular to theArc direction.
{
+ const Standard_Real aCoeffs[] = { 0.02447174185, 0.09549150281, 0.20610737385, 0.34549150281, /*Sin(x)*Sin(x)*/
+ 0.5, 0.65450849719, 0.79389262615 };
if(theLine->ArcType() == IntPatch_Restriction)
{//Restriction-restriction processing
const Handle(IntPatch_RLine)& aRL2 = Handle(IntPatch_RLine)::DownCast(theLine);
const Standard_Real aUl = aPmin.X(), aVl = aPmin.Y();
- const Standard_Integer aNbPoints = 4;
- const Standard_Real aStepU = (aUl - aUf)/aNbPoints,
- aStepV = (aVl - aVf)/aNbPoints;
-
- Standard_Real aU = aUf+aStepU, aV = aVf+aStepV;
- for(Standard_Integer i = 1; i < aNbPoints; i++)
+ Standard_Real aU, aV;
+ Standard_Real dU = aUl - aUf, dV = aVl - aVf;
+ for(Standard_Integer i = 0; i < 7; i++)
{
+ aU = aUf + aCoeffs[i] * dU;
+ aV = aVf + aCoeffs[i] * dV;
+
aX.Value(1) = aU;
aX.Value(2) = aV;
return Standard_False;
}
- if(Abs(aVal(1)) > theToler3D)
+ if(Abs(theFunc.Root()) > theToler3D)
{
return Standard_False;
- }
-
- aU += aStepU;
- aV += aStepV;
+ }
}
}
--- /dev/null
+puts "================"
+puts "0030944: Modeling Algorithms - Intersection curves between pair of faces are not found"
+puts "================"
+puts ""
+
+set MaxTol 2.e-7
+set GoodNbCurv 12
+
+restore [locate_data_file bug27469_shapes.brep] b
+explode b
+explode b_1 f
+explode b_2 f
+set log [bopcurves b_1_2 b_2_3 -2d]
+
+regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+if {${Toler} > ${MaxTol}} {
+ puts "Error: Tolerance is too big!"
+}
+
+if {${NbCurv} != ${GoodNbCurv}} {
+ puts "Error: Curve Number is bad!"
+}
+
+
+smallview
+donly b_1_2 b_2_3
+eval display [directory c_*]
+fit
+checkview -screenshot -2d -path ${imagedir}/${test_image}.png