+
+//=======================================================================
+//function : IsUniform
+//purpose : auxilary function
+//=======================================================================
+bool IsUniform(const Handle(Geom2d_Curve)& C2d, double fp, double lp)
+{
+ //cout<<"IsUniform fp = "<<fp<<" lp = "<<lp<<endl;
+ if(C2d.IsNull())
+ return true;
+ Geom2dAdaptor_Curve A2dC(C2d);
+ double d1 = GCPnts_AbscissaPoint::Length( A2dC, fp, lp );
+ double d2 = GCPnts_AbscissaPoint::Length( A2dC, fp, fp+(lp-fp)/2. );
+ double d4 = GCPnts_AbscissaPoint::Length( A2dC, fp, fp+(lp-fp)/4. );
+ //cout<<"d1 = "<<d1<<" d2 = "<<d2<<" fabs(2*d2/d1-1.0) = "<<fabs(2*d2/d1-1.0)<<endl;
+ if( fabs(2*d2/d1-1.0) > 0.01 || fabs(2*d4/d2-1.0) > 0.01 )
+ return false;
+
+ return true;
+}
+
+