diff options
author | Jacques Lucke <jacques@blender.org> | 2022-10-20 17:15:02 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-10-20 17:15:16 +0300 |
commit | 9d710374bda41359132f929286f5eea7340441b5 (patch) | |
tree | cbbd3303f74ca61fb06f64edc29b82a84190a74c | |
parent | f017fdecefc41ffe796ccfe9a1cb05772a7ad315 (diff) |
Fix T101645: division by zero in fillet node
-rw-r--r-- | source/blender/geometry/intern/fillet_curves.cc | 6 |
1 files changed, 4 insertions, 2 deletions
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); } |