From 4563bbf6b285e6ee8fc191f10f28cdffee07157a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81mie=20Dumas?= Date: Sat, 11 Apr 2026 23:21:03 -0700 Subject: [PATCH] Fix numerically negative areas leading to infinite loop in dynamic programming. --- include/Src/ConstrainedTriangulation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Src/ConstrainedTriangulation.h b/include/Src/ConstrainedTriangulation.h index 22b3825..8a87016 100644 --- a/include/Src/ConstrainedTriangulation.h +++ b/include/Src/ConstrainedTriangulation.h @@ -42,7 +42,7 @@ namespace MishaK Point< GeometryReal , 2 > d[] = { vertices[i1]-vertices[i0] , vertices[i2]-vertices[i0] }; SquareMatrix< double , 2 > M; for( int i=0 ; i<2 ; i++ ) for( int j=0 ; j<2 ; j++ ) M(i,j) = Point< GeometryReal , 2 >::Dot( d[i] , d[j] ); - return M.determinant(); + return std::max< double >( 0. , M.determinant() ); }; MinimalAreaTriangulation::GetTriangulation( SquaredArea , static_cast< unsigned int >( vertices.size() ) , outputTriangles ); }