From cdf68039f7281207ecc4c1257b1afda8b66108e6 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 26 Jul 2022 10:30:13 +0200 Subject: [PATCH] fixed bug with zero area section modulus returning nans --- src/libslic3r/SupportSpotsGenerator.cpp | 1 + src/libslic3r/SupportSpotsGenerator.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/SupportSpotsGenerator.cpp b/src/libslic3r/SupportSpotsGenerator.cpp index b313030ac..a0b84b285 100644 --- a/src/libslic3r/SupportSpotsGenerator.cpp +++ b/src/libslic3r/SupportSpotsGenerator.cpp @@ -638,6 +638,7 @@ public: auto compute_elastic_section_modulus = [&line_dir]( const Vec3f ¢roid_accumulator, const Vec2f &second_moment_of_area_accumulator, const float &area) { + if (area < EPSILON) return 0.0f; Vec3f centroid = centroid_accumulator / area; Vec2f variance = (second_moment_of_area_accumulator / area - centroid.head<2>().cwiseProduct(centroid.head<2>())); diff --git a/src/libslic3r/SupportSpotsGenerator.hpp b/src/libslic3r/SupportSpotsGenerator.hpp index 531f2768b..7be312bcb 100644 --- a/src/libslic3r/SupportSpotsGenerator.hpp +++ b/src/libslic3r/SupportSpotsGenerator.hpp @@ -10,7 +10,7 @@ namespace SupportSpotsGenerator { struct Params { // the algorithm should use the following units for all computations: distance [mm], mass [g], time [s], force [N] const float bridge_distance = 12.0f; //mm - const float bridge_distance_decrease_by_curvature_factor = 5.0f; // allowed bridge distance = bridge_distance / (this factor * (curvature / PI) ) + const float bridge_distance_decrease_by_curvature_factor = 3.0f; // allowed bridge distance = bridge_distance / (this factor * (curvature / PI) ) const float min_distance_between_support_points = 3.0f; //mm const float support_points_interface_radius = 0.6f; // mm