X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2Ftest_HYDROData_BSplineOperation.cxx;h=51bf3693276fc6fe6cc4eef0aecfa571558018cf;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=33658760d4d4e1fac0460e4fd671c8ba9d90fd9f;hpb=84f8b4a57d3cdad820bc1333a5066699cd1c8ae3;p=modules%2Fhydro.git diff --git a/src/HYDROData/test_HYDROData_BSplineOperation.cxx b/src/HYDROData/test_HYDROData_BSplineOperation.cxx index 33658760..51bf3693 100644 --- a/src/HYDROData/test_HYDROData_BSplineOperation.cxx +++ b/src/HYDROData/test_HYDROData_BSplineOperation.cxx @@ -4,25 +4,32 @@ #include #include +const double LOCAL_SELECTION_TOLERANCE = 0.0001; + void test_HYDROData_BSplineOperation::testCurve() { // prepare points: function of sin(x) - QList aPoints; - double x; - for(x = 0; x < 6.28; x += 0.1) - aPoints< aPoints; + for ( double x = 0; x < 6.28; x += 0.1 ) + { + gp_XYZ aPoint( x, sin( x ), 0.0 ); + aPoints.Append( aPoint ); + } // compute BSpline - HYDROData_BSplineOperation aBSpline(aPoints, 0, false); + HYDROData_BSplineOperation aBSpline( aPoints, false, LOCAL_SELECTION_TOLERANCE ); + Handle(Geom_BSplineCurve) aBS = aBSpline.Curve(); - CPPUNIT_ASSERT(!aBS.IsNull()); - CPPUNIT_ASSERT(!aBS->IsClosed()); - CPPUNIT_ASSERT_EQUAL(aBS->Continuity(), GeomAbs_C2); + CPPUNIT_ASSERT( !aBS.IsNull() ); + CPPUNIT_ASSERT( !aBS->IsClosed() ); + CPPUNIT_ASSERT_EQUAL( aBS->Continuity(), GeomAbs_C2 ); + // check that values of BSpline are not far from original "sin" function // in all points of the curve - for(x = 0; x < 6.29; x += 0.001) { - double aDiff = aBS->Value(x).Y() - sin(aBS->Value(x).X()); - if (aDiff < 0) aDiff = -aDiff; - CPPUNIT_ASSERT(aDiff < 3.e-6); // this number is found manually + for ( double x = 0; x < 6.29; x += 0.001 ) + { + double aDiff = aBS->Value( x ).Y() - sin( aBS->Value( x ).X() ); + if ( aDiff < 0 ) aDiff = -aDiff; + CPPUNIT_ASSERT( aDiff < 3.e-6 ); // this number is found manually } } @@ -30,15 +37,22 @@ void test_HYDROData_BSplineOperation::testPath() { // prepare points: function of sin(x) static const double aScale = 10000000.; - QList aPoints; - double x; - for(x = 0; x < 6.28; x += 0.1) - aPoints< aPoints; + for ( double x = 0; x < 6.28; x += 0.1 ) + { + gp_XYZ aPoint( x * aScale, sin( x ) * aScale, 0.0 ); + aPoints.Append( aPoint ); + } + // convert to QPainterPath - HYDROData_BSplineOperation aBSpline(aPoints, 0, false); - CPPUNIT_ASSERT(!aBSpline.Curve().IsNull()); - QPainterPath aPath = aBSpline.ComputePath(); - CPPUNIT_ASSERT(!aPath.isEmpty()); + HYDROData_BSplineOperation aBSpline( aPoints, false, LOCAL_SELECTION_TOLERANCE ); + + CPPUNIT_ASSERT( !aBSpline.Curve().IsNull() ); + + QPainterPath aPath; + aBSpline.ComputePath( aPath ); + CPPUNIT_ASSERT( !aPath.isEmpty() ); /* QImage aPic(1300, 600, QImage::Format_RGB32); @@ -50,7 +64,7 @@ void test_HYDROData_BSplineOperation::testPath() // check that values of Path are not far from original "sin" function // in all points of the curve - QList aPolyF = aPath.toSubpathPolygons(QTransform()); + QList aPolyF = aPath.toSubpathPolygons( QTransform() ); QList::iterator aFIter = aPolyF.begin(); for(; aFIter != aPolyF.end();aFIter++) { QPolygon aPoly = aFIter->toPolygon();