diff --git a/CurveAux.cpp b/CurveAux.cpp index 48ebc9a..88edcc9 100644 --- a/CurveAux.cpp +++ b/CurveAux.cpp @@ -545,6 +545,18 @@ NurbsToBezierCurve( const CNurbsData& cnData) return nullptr ; // numero degli intervalli int nInt = nU - 2 * cnData.nDeg + 1 ; + // verifico le condizioni agli estremi sui nodi (i primi nDeg nodi e gli ultimi nDeg nodi devono essere uguali tra loro) + bool bOk = true ; + for ( int i = 1 ; i < cnData.nDeg ; ++ i) { + if ( abs( cnData.vU[i] - cnData.vU[0]) >= EPS_ZERO) + bOk = false ; + } + for ( int i = 1 ; i < cnData.nDeg ; ++ i) { + if ( abs( cnData.vU[nU - 1 - i] - cnData.vU[nU - 1]) >= EPS_ZERO) + bOk = false ; + } + if ( ! bOk) + return nullptr ; // se 1 solo intervallo, la Nurbs è già una curva di Bezier if ( nInt == 1) { diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 3570256..b4acb7d 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ