diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h index 842f16dd2d41..4eae0a738f3d 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h @@ -116,7 +116,10 @@ class Probabilistic_plane_quadric_calculator const Col_4& /*p0*/, const Col_4& /*p1*/) const { - // @fixme check this + // TODO: an all-zero matrix is just a specific case of a non-invertible matrix; + // shouldn't this rather assert that quadric is invertible? + CGAL_precondition(!quadric.isZero(0)); + return construct_optimal_point_invertible(quadric); } }; diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h index 4be3f28c29c5..91104d5d8c5b 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h @@ -106,7 +106,9 @@ class Probabilistic_triangle_quadric_calculator Col_4 construct_optimal_point(const Mat_4& quadric, const Col_4& /*p0*/, const Col_4& /*p1*/) const { - // @fixme check this + // TODO: an all-zero matrix is just a specific case of a non-invertible matrix; + // shouldn't this rather assert that quadric is invertible? + CGAL_precondition(!quadric.isZero(0)); return construct_optimal_point_invertible(quadric); } }; diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/GarlandHeckbert_policy_base.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/GarlandHeckbert_policy_base.h index d669e44f3178..41f6103cb8e2 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/GarlandHeckbert_policy_base.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/internal/GarlandHeckbert_policy_base.h @@ -208,9 +208,6 @@ class GarlandHeckbert_cost_and_placement if(!placement) return boost::optional(); - CGAL_precondition(!get(vcm(), profile.v0()).isZero(0)); - CGAL_precondition(!get(vcm(), profile.v1()).isZero(0)); - const Mat_4 combined_matrix = combine_matrices(get(vcm(), profile.v0()), get(vcm(), profile.v1())); const Col_4 pt = point_to_homogenous_column(*placement); @@ -224,9 +221,6 @@ class GarlandHeckbert_cost_and_placement template boost::optional operator()(const Profile& profile) const { - CGAL_precondition(!get(vcm(), profile.v0()).isZero(0)); - CGAL_precondition(!get(vcm(), profile.v1()).isZero(0)); - // the combined matrix has already been computed in the evaluation of the cost... const Mat_4 combined_matrix = combine_matrices(get(vcm(), profile.v0()), get(vcm(), profile.v1()));