[Bf-blender-cvs] [e5b4e6b] master: Clamp dot-product to avoid precision error
Campbell Barton
noreply at git.blender.org
Sat May 7 15:58:32 CEST 2016
Commit: e5b4e6b0a3e8d40dc31dec74cfa2c297b3c49a71
Author: Campbell Barton
Date: Sun May 8 00:02:34 2016 +1000
Branches: master
https://developer.blender.org/rBe5b4e6b0a3e8d40dc31dec74cfa2c297b3c49a71
Clamp dot-product to avoid precision error
Would only happen in degenerate cases.
===================================================================
M extern/curve_fit_nd/intern/curve_fit_cubic.c
===================================================================
diff --git a/extern/curve_fit_nd/intern/curve_fit_cubic.c b/extern/curve_fit_nd/intern/curve_fit_cubic.c
index f07bb73..8fc7198 100644
--- a/extern/curve_fit_nd/intern/curve_fit_cubic.c
+++ b/extern/curve_fit_nd/intern/curve_fit_cubic.c
@@ -419,7 +419,8 @@ static double points_calc_circumference_factor(
const double dot = dot_vnvn(tan_l, tan_r, dims);
const double len_tangent = dot < 0.0 ? len_vnvn(tan_l, tan_r, dims) : len_negated_vnvn(tan_l, tan_r, dims);
if (len_tangent > DBL_EPSILON) {
- double angle = acos(-fabs(dot));
+ /* only clamp to avoid precision error */
+ double angle = acos(max(-fabs(dot), -1.0));
/* Angle may be less than the length when the tangents define >180 degrees of the circle,
* (tangents that point away from each other).
* We could try support this but will likely cause extreme >1 scales which could cause other issues. */
More information about the Bf-blender-cvs
mailing list