BSplCLib_Cache.cxx - it is forbidden zeroing derivatives for rational splines when derivative order more than degree
bug31381 - test case added
// When the degree of curve is lesser than the requested derivative,
// nullify array cells corresponding to greater derivatives
Standard_Integer aDerivative = theDerivative;
- if (myParams.Degree < theDerivative)
+ if (!myIsRational && myParams.Degree < theDerivative)
{
aDerivative = myParams.Degree;
for (Standard_Integer ind = myParams.Degree * aDimension; ind < (theDerivative + 1) * aDimension; ind++)
--- /dev/null
+puts "# ============"
+puts "# 0031381: Foundation Classes - wrong evaluations for rational BSpline curves using Adaptor curves "
+puts "# ============"
+puts ""
+puts "Eliminate output of approxcurve command"
+puts "REQUIRED ALL: Error 4.32754e-05"
+
+circle c 0 0 1
+puts "Get rational BSpline curve of degree 2"
+convert c c
+puts "Get offset curve to force calculation of D3 for base curve when algorithm needs D2 for offset"
+offset oc c -.5
+puts "Approximate offset curve with continuity C2"
+approxcurve ac oc 1.e-4 2 5 25
+checklength ac -l 3.1415850499856011
\ No newline at end of file