Follow-up to 0161a59a93: Too big epsilon created tiny unconnected extrusions, so epsilon was changed to the smallest value that allows resolving rounding issues after division by two.

This commit is contained in:
Lukáš Hejl 2022-08-12 09:17:11 +02:00
parent 4fa76b2d8b
commit 17e7b182ee

View File

@ -2029,10 +2029,10 @@ void SkeletalTrapezoidation::generateJunctions(ptr_vector_t<BeadingPropagation>&
for (junction_idx = (std::max(size_t(1), beading->toolpath_locations.size()) - 1) / 2; junction_idx < num_junctions; junction_idx--) for (junction_idx = (std::max(size_t(1), beading->toolpath_locations.size()) - 1) / 2; junction_idx < num_junctions; junction_idx--)
{ {
coord_t bead_R = beading->toolpath_locations[junction_idx]; coord_t bead_R = beading->toolpath_locations[junction_idx];
// toolpath_locations computed inside DistributedBeadingStrategy be off by 1 because of rounding errors. // toolpath_locations computed inside DistributedBeadingStrategy could be off by 1 because of rounding errors.
// In GH issue #8472, these roundings errors caused missing the middle extrusion. // In GH issue #8472, these roundings errors caused missing the middle extrusion.
// Adding some epsilon should help resolve those cases. // Adding small epsilon should help resolve those cases.
if (bead_R <= start_R + scaled<coord_t>(0.005)) if (bead_R <= start_R + 1)
{ // Junction coinciding with start node is used in this function call { // Junction coinciding with start node is used in this function call
break; break;
} }