From 2f3a6189a74c0953d8d36e07adaa7aad8b11555a Mon Sep 17 00:00:00 2001 From: DarioS Date: Sun, 5 Feb 2023 15:41:33 +0100 Subject: [PATCH] EgtGeomKernel : - piccola modifica a SurfTriMesh::Cut per evitare deformazione facce per aggiustamento vertici su piano di taglio. --- Polygon3d.cpp | 2 +- SurfTriMeshCuts.cpp | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Polygon3d.cpp b/Polygon3d.cpp index c78cc25..ee20680 100644 --- a/Polygon3d.cpp +++ b/Polygon3d.cpp @@ -187,7 +187,7 @@ Polygon3d::Trim( const Plane3d& plPlane, bool bInVsOut, bool bOnEq, bool bOnCt) DBLVECTOR vDist ; vDist.reserve( m_vVert.capacity()) ; for ( auto& ptP : m_vVert) { - double dDist = ( ptP - ORIG) * plPlane.GetVersN() - plPlane.GetDist() ; + double dDist = DistPointPlane( ptP, plPlane) ; if ( abs( dDist) < EPS_SMALL) ++ nNbrOn ; else if ( dDist < 0) diff --git a/SurfTriMeshCuts.cpp b/SurfTriMeshCuts.cpp index c89cde6..8bfda97 100644 --- a/SurfTriMeshCuts.cpp +++ b/SurfTriMeshCuts.cpp @@ -70,14 +70,13 @@ SurfTriMesh::CutByTriangles( const Plane3d& plPlane, bool bSaveOnEq, bool& bModi return false ; // classifico i vertici rispetto al piano - double dTol = max( min( 0.5 * m_dLinTol, 10 * EPS_SMALL), EPS_SMALL) ; for ( int i = 0 ; i < GetVertexSize() ; ++ i) { + // salto i vertici cancellati + if ( m_vVert[i].nIdTria == SVT_DEL) + continue ; double dDist = DistPointPlane( m_vVert[i].ptP, plPlane) ; - if ( abs( dDist) < dTol) { + if ( abs( dDist) < EPS_SMALL) m_vVert[i].nTemp = 0 ; - if ( abs( dDist) > EPS_SMALL) - m_vVert[i].ptP -= plPlane.GetVersN() * dDist ; - } else if ( dDist > 0) m_vVert[i].nTemp = +1 ; else