diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-09-04 10:02:51 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-09-04 15:06:36 +0300 |
commit | d0e7ba3fd1a9becfc843eeee1d1f9fffd83f3748 (patch) | |
tree | 68eb96c47c7592f54573a775214a545b9360de82 /source/blender/blenlib/intern/math_geom.c | |
parent | 2ea96df15990b46f11fa8b2f6065d53814cbc990 (diff) |
Math Lib: avoid sqrt w/ triangle intersection
Diffstat (limited to 'source/blender/blenlib/intern/math_geom.c')
-rw-r--r-- | source/blender/blenlib/intern/math_geom.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index baee17e95db..dca54f51a5f 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1647,14 +1647,8 @@ bool isect_tri_tri_epsilon_v3( float span_fac; interp_v3_v3v3(ix_tri, tri_pair[t][j_prev], tri_pair[t][j], edge_fac); -#if 0 - span_fac = dist_signed_squared_to_plane3_v3(ix_tri, plane_no); -#else - { - span_fac = dot_v3v3(plane_no, ix_tri); - span_fac = copysignf(span_fac * span_fac, span_fac); - } -#endif + /* the actual distance, since 'plane_no' is normalized */ + span_fac = dot_v3v3(plane_no, ix_tri); range[t].min = min_ff(range[t].min, span_fac); range[t].max = max_ff(range[t].max, span_fac); @@ -1671,8 +1665,8 @@ bool isect_tri_tri_epsilon_v3( { if (r_i1 && r_i2) { project_plane_v3_v3v3(plane_co, plane_co, plane_no); - madd_v3_v3v3fl(r_i1, plane_co, plane_no, sqrtf_signed(max_ff(range[0].min, range[1].min))); - madd_v3_v3v3fl(r_i2, plane_co, plane_no, sqrtf_signed(min_ff(range[0].max, range[1].max))); + madd_v3_v3v3fl(r_i1, plane_co, plane_no, max_ff(range[0].min, range[1].min)); + madd_v3_v3v3fl(r_i2, plane_co, plane_no, min_ff(range[0].max, range[1].max)); } return true; |