[Bf-blender-cvs] [64d8f6b1919] newboolean: Use floating point filtering to make the degenerate triangle detection faster.
Howard Trickey
noreply at git.blender.org
Mon Jul 27 00:09:51 CEST 2020
Commit: 64d8f6b191937d72f5ee42691b674c4805d96f65
Author: Howard Trickey
Date: Sun Jul 26 13:23:49 2020 -0400
Branches: newboolean
https://developer.blender.org/rB64d8f6b191937d72f5ee42691b674c4805d96f65
Use floating point filtering to make the degenerate triangle detection faster.
===================================================================
M source/blender/blenlib/intern/mesh_intersect.cc
===================================================================
diff --git a/source/blender/blenlib/intern/mesh_intersect.cc b/source/blender/blenlib/intern/mesh_intersect.cc
index b61e120c1e3..2124e92379e 100644
--- a/source/blender/blenlib/intern/mesh_intersect.cc
+++ b/source/blender/blenlib/intern/mesh_intersect.cc
@@ -2695,6 +2695,16 @@ static bool has_degenerate_tris(const Mesh &tm)
if (v0 == v1 || v0 == v2 || v1 == v2) {
return true;
}
+ double3 da = v2->co - v0->co;
+ double3 db = v2->co - v1->co;
+ double3 dab = double3::cross_high_precision(da, db);
+ if (dab.x == 0 && dab.y == 0 && dab.z == 0) {
+ return true;
+ }
+ double err_bound = supremum_cross(da, db) * index_cross * DBL_EPSILON;
+ if (fabs(dab.x) > err_bound && fabs(dab.y) > err_bound && fabs(dab.z) > err_bound) {
+ return false;
+ }
mpq3 a = v2->co_exact - v0->co_exact;
mpq3 b = v2->co_exact - v1->co_exact;
mpq3 ab = mpq3::cross(a, b);
More information about the Bf-blender-cvs
mailing list