From f790736fd72cc9dde668d8401b2b0f07dc93b62d Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 12 Feb 2026 16:25:28 +0100 Subject: [PATCH] EgtGeomKernel : - modificata conversione da linea a bezier. --- CurveAux.cpp | 3 +-- CurveBezier.cpp | 7 +++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CurveAux.cpp b/CurveAux.cpp index ab69a88..484367d 100644 --- a/CurveAux.cpp +++ b/CurveAux.cpp @@ -534,8 +534,7 @@ LineToBezierCurve( const ICurveLine* pCrvLine, int nDeg, bool bMakeRatOrNot) return nullptr ; PtrOwner pCrvBezier( CreateCurveBezier()) ; - // rendo tutte le curve di grado 2 e razionali così posso convertire anche archi e avere tutte curve dello stesso grado e razionali - pCrvBezier->Init( nDeg, true) ; + pCrvBezier->Init( nDeg, false) ; if ( ! pCrvBezier->FromLine( *pCrvLine)) return nullptr ; if ( bMakeRatOrNot) diff --git a/CurveBezier.cpp b/CurveBezier.cpp index b22bc43..5be2d71 100644 --- a/CurveBezier.cpp +++ b/CurveBezier.cpp @@ -275,20 +275,19 @@ CurveBezier::FromLine( const ICurveLine& crLine) { if ( m_nStatus != OK || ! crLine.IsValid()) return false ; - double dWeight = 1 ; int nCount = 0 ; Point3d ptStart ; crLine.GetStartPoint( ptStart) ; - SetControlPoint( nCount, ptStart, dWeight) ; + SetControlPoint( nCount, ptStart) ; ++nCount ; double dPart = 1. / m_nDeg ; for ( int i = 1 ; i < m_nDeg ; ++i) { double dU = i * dPart ; Point3d ptMid ; crLine.GetPointD1D2( dU, ICurve::FROM_MINUS, ptMid) ; - SetControlPoint( nCount, ptMid, dWeight) ; + SetControlPoint( nCount, ptMid) ; ++nCount ; } Point3d ptEnd ; crLine.GetEndPoint( ptEnd) ; - SetControlPoint( nCount, ptEnd, dWeight) ; + SetControlPoint( nCount, ptEnd) ; ++nCount ; return true ; }