From d60d38a24b9e8d67a1f7b072c86a084a676af608 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 29 Nov 2024 18:22:48 +0100 Subject: [PATCH] Revert "EgtGeomKernel 2.6i1 :" This reverts commit e598e7986fa9d2b13af577389ad865d3c38e0dcd. --- EgtGeomKernel.rc | Bin 11718 -> 11718 bytes PolyLine.cpp | 55 ++++++++--------------------------------------- 2 files changed, 9 insertions(+), 46 deletions(-) diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index f3f7b948d6bfae015e9f2095d118c51d164d2be2..f4655db99bba84a1577f8f0e72e36a7ffef0d3aa 100644 GIT binary patch delta 289 zcmX>WeJpyzI%aiGhCGIJh8%`ehGHOAV9;O)W+-7u1ma8}FBB-731Uyas3kpFPd#gM z9Lp>wRzn6I2BXdQ`OY&WeJpyzI%aKGhCGIJh8%`WhGK>c1_cHUhESkLCPN8BDnkm89}HwAf_cT0FKS6| z{=m$_%xc7-!(h1iHs5)s$u(R$lRrqRFy}BBPTnXWzF9yij&bt@Za0J?Yi78lfzT2b zxMmb_pr#&aBu!XN4k6XK2PfatnK${Bng}n*W1e8IN?D*QkySo HePsdwqz_B^ diff --git a/PolyLine.cpp b/PolyLine.cpp index 117ce9d..9557017 100644 --- a/PolyLine.cpp +++ b/PolyLine.cpp @@ -1085,8 +1085,15 @@ PolyLine::Invert( bool bInvertU) //---------------------------------------------------------------------------- bool -PolyLine::MyRemoveSamePoints( double dToler) +PolyLine::Flatten( double dZ) { + // verifico non sia vuota + if ( m_lUPoints.empty()) + return true ; + // ciclo su tutti gli elementi per portarli alla Z indicata + for ( auto& UPoint : m_lUPoints) { + UPoint.first.z = dZ ; + } // elimino i punti consecutivi diventati coincidenti (almeno 2) if ( m_lUPoints.size() < 2) return true ; @@ -1097,7 +1104,7 @@ PolyLine::MyRemoveSamePoints( double dToler) // mentre esiste un corrente while ( currP != m_lUPoints.end()) { // se coincidono - if ( AreSamePointEpsilon( precP->first, currP->first, dToler)) { + if ( AreSamePointApprox( precP->first, currP->first)) { // elimino il punto corrente currP = m_lUPoints.erase( currP) ; // il precedente rimane inalterato @@ -1112,50 +1119,6 @@ PolyLine::MyRemoveSamePoints( double dToler) return true ; } -//---------------------------------------------------------------------------- -bool -PolyLine::Flatten( double dZ) -{ - // verifico non sia vuota - if ( m_lUPoints.empty()) - return true ; - // ciclo su tutti gli elementi per portarli alla Z indicata - for ( auto& UPoint : m_lUPoints) - UPoint.first.z = dZ ; - // elimino i punti consecutivi diventati coincidenti - MyRemoveSamePoints() ; - return true ; -} - -//---------------------------------------------------------------------------- -bool -PolyLine::FlattenAdv( double dToler) -{ - // verifico non sia vuota - if ( m_lUPoints.empty()) - return true ; - // recupero dati sulla planarità della polilinea - int nRank ; - Point3d ptCen ; - Vector3d vtDir ; - bool bFlat = IsFlat( nRank, ptCen, vtDir, dToler) ; - // se non planare entro la tolleranza, esco - if ( ! bFlat) - return false ; - // se punto o linea, non devo fare alcunché - if ( nRank == 0 || nRank == 1) - return true ; - // assegno il piano medio - Plane3d plPlane ; - plPlane.Set( ptCen, vtDir) ; - // proietto i punti su questo piano - for ( auto& UPoint : m_lUPoints) - UPoint.first = ProjectPointOnPlane( UPoint.first, plPlane) ; - // elimino i punti consecutivi diventati coincidenti - MyRemoveSamePoints() ; - return true ; -} - //---------------------------------------------------------------------------- bool PolyLine::GetConvexHullXY( PNTVECTOR& vConvHull) const