X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FBSplCLib%2FBSplCLib.cxx;h=e53a28df93c0218d8fe3800ee3b3df610a9f5ca0;hb=3d58dc498b209fa937919a4a69a81a83657ef2f9;hpb=68cdb44b0aa49d4672fb43f5c7fae69f9dc7b4b8 diff --git a/src/BSplCLib/BSplCLib.cxx b/src/BSplCLib/BSplCLib.cxx index 683e4ab76e..e53a28df93 100644 --- a/src/BSplCLib/BSplCLib.cxx +++ b/src/BSplCLib/BSplCLib.cxx @@ -1175,7 +1175,8 @@ void BSplCLib::Bohm(const Standard_Real U, for (j = Degm1; j >= i; j--) { jDmi--; - *pole -= *tbis; *pole /= (knot[jDmi] - knot[j]); + *pole -= *tbis; + *pole = (knot[jDmi] == knot[j]) ? 0.0 : *pole / (knot[jDmi] - knot[j]); pole--; tbis--; } @@ -1219,7 +1220,7 @@ void BSplCLib::Bohm(const Standard_Real U, for (j = Degm1; j >= i; j--) { jDmi--; - coef = 1. / (knot[jDmi] - knot[j]); + coef = (knot[jDmi] == knot[j]) ? 0.0 : 1. / (knot[jDmi] - knot[j]); *pole -= *tbis; *pole *= coef; pole++; tbis++; *pole -= *tbis; *pole *= coef; pole -= 3; @@ -1267,7 +1268,7 @@ void BSplCLib::Bohm(const Standard_Real U, for (j = Degm1; j >= i; j--) { jDmi--; - coef = 1. / (knot[jDmi] - knot[j]); + coef = (knot[jDmi] == knot[j]) ? 0.0 : 1. / (knot[jDmi] - knot[j]); *pole -= *tbis; *pole *= coef; pole++; tbis++; *pole -= *tbis; *pole *= coef; pole++; tbis++; *pole -= *tbis; *pole *= coef; @@ -1318,7 +1319,7 @@ void BSplCLib::Bohm(const Standard_Real U, for (j = Degm1; j >= i; j--) { jDmi--; - coef = 1. / (knot[jDmi] - knot[j]); + coef = (knot[jDmi] == knot[j]) ? 0.0 : 1. /(knot[jDmi] - knot[j]) ; *pole -= *tbis; *pole *= coef; pole++; tbis++; *pole -= *tbis; *pole *= coef; pole++; tbis++; *pole -= *tbis; *pole *= coef; pole++; tbis++; @@ -1374,7 +1375,7 @@ void BSplCLib::Bohm(const Standard_Real U, for (j = Degm1; j >= i; j--) { jDmi--; - coef = 1. / (knot[jDmi] - knot[j]); + coef = (knot[jDmi] == knot[j]) ? 0.0 : 1. / (knot[jDmi] - knot[j]); for (k = 0; k < Dimension; k++) { *pole -= *tbis; *pole *= coef; pole++; tbis++;