[Bf-blender-cvs] [9d710374bda] master: Fix T101645: division by zero in fillet node

Jacques Lucke noreply at git.blender.org
Thu Oct 20 16:15:58 CEST 2022


Commit: 9d710374bda41359132f929286f5eea7340441b5
Author: Jacques Lucke
Date:   Thu Oct 20 16:15:02 2022 +0200
Branches: master
https://developer.blender.org/rB9d710374bda41359132f929286f5eea7340441b5

Fix T101645: division by zero in fillet node

===================================================================

M	source/blender/geometry/intern/fillet_curves.cc

===================================================================

diff --git a/source/blender/geometry/intern/fillet_curves.cc b/source/blender/geometry/intern/fillet_curves.cc
index 1bbbee6edef..2479458f88d 100644
--- a/source/blender/geometry/intern/fillet_curves.cc
+++ b/source/blender/geometry/intern/fillet_curves.cc
@@ -148,12 +148,14 @@ static float limit_radius(const float3 &position_prev,
   const float displacement_prev = radius_prev * std::tan(angle_prev / 2.0f);
   const float segment_length_prev = math::distance(position, position_prev);
   const float total_displacement_prev = displacement_prev + displacement;
-  const float factor_prev = std::clamp(segment_length_prev / total_displacement_prev, 0.0f, 1.0f);
+  const float factor_prev = std::clamp(
+      safe_divide(segment_length_prev, total_displacement_prev), 0.0f, 1.0f);
 
   const float displacement_next = radius_next * std::tan(angle_next / 2.0f);
   const float segment_length_next = math::distance(position, position_next);
   const float total_displacement_next = displacement_next + displacement;
-  const float factor_next = std::clamp(segment_length_next / total_displacement_next, 0.0f, 1.0f);
+  const float factor_next = std::clamp(
+      safe_divide(segment_length_next, total_displacement_next), 0.0f, 1.0f);
 
   return radius * std::min(factor_prev, factor_next);
 }



More information about the Bf-blender-cvs mailing list