From f031160066e982aa2e3f22a6ef8c8264aa4841be Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 11 Nov 2019 07:30:29 +0000 Subject: [PATCH] EgtGeomKernel : - a Polygon3d aggiunta GetCentroid - modificata PolygonPlane per gestire correttamente i triangoli dando solo i tre vertici senza ripeterne uno. --- Polygon3d.cpp | 12 ++++++++++++ PolygonPlane.cpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Polygon3d.cpp b/Polygon3d.cpp index b41e773..a5f5a87 100644 --- a/Polygon3d.cpp +++ b/Polygon3d.cpp @@ -210,6 +210,18 @@ Polygon3d::GetPolyLine( void) const return PL ; } +//---------------------------------------------------------------------------- +Point3d +Polygon3d::GetCentroid( void) const +{ + PolygonPlane PolyPlane ; + for ( const auto& ptP : m_vVert) + PolyPlane.AddPoint( ptP) ; + Point3d ptCen ; + PolyPlane.GetCentroid( ptCen) ; + return ptCen ; +} + //---------------------------------------------------------------------------- double Polygon3d::GetPerimeter( void) const diff --git a/PolygonPlane.cpp b/PolygonPlane.cpp index 5e3564b..ff0db47 100644 --- a/PolygonPlane.cpp +++ b/PolygonPlane.cpp @@ -61,7 +61,7 @@ bool PolygonPlane::Finalize( void) { // almeno 3 punti (il triangolo è il poligono con minimo numero di lati) - if ( m_nPntNbr < 3) + if ( m_nPntNbr + 1 < 3) return false ; // se il poligono non è stato chiuso, aggiungo calcolo per ultimo lato if ( ! AreSamePointApprox( m_ptFirst, m_ptLast)) {