Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-09-19 11:58:47 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-09-19 11:58:47 +0400
commit1ca5de1b51fb57deee02bc65d681f6245103e74b (patch)
treea74edab87d3310cb4d84d6cb1a7866d3c731d4b3 /source/blender/bmesh/intern
parentac0a2ef274c3542a2f72b1e1fd70897b910a04d7 (diff)
speedup for ngon tessellation, check if the angle is an improvement before doing the full intersection check.
with 500 verts gives approx 2x speedup.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r--source/blender/bmesh/intern/bmesh_polygon.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c
index 1a1d92a9d96..dbfb08454e4 100644
--- a/source/blender/bmesh/intern/bmesh_polygon.c
+++ b/source/blender/bmesh/intern/bmesh_polygon.c
@@ -941,18 +941,18 @@ static BMLoop *poly_find_ear(BMFace *f, float (*projectverts)[2], const bool use
const BMVert *v2 = l_iter->v;
const BMVert *v3 = l_iter->next->v;
- if (bm_face_goodline((float const (*)[2])projectverts, f,
- BM_elem_index_get(v1),
- BM_elem_index_get(v2),
- BM_elem_index_get(v3)))
- {
- /* Compute highest cos (i.e. narrowest angle) of this tri. */
- cos = max_fff(abscoss[i],
- fabsf(cos_v3v3v3(v2->co, v3->co, v1->co)),
- fabsf(cos_v3v3v3(v3->co, v1->co, v2->co)));
-
- /* Compare to prev best (i.e. lowest) cos. */
- if (cos < cos_best) {
+ /* Compute highest cos (i.e. narrowest angle) of this tri. */
+ cos = max_fff(abscoss[i],
+ fabsf(cos_v3v3v3(v2->co, v3->co, v1->co)),
+ fabsf(cos_v3v3v3(v3->co, v1->co, v2->co)));
+
+ /* Compare to prev best (i.e. lowest) cos. */
+ if (cos < cos_best) {
+ if (bm_face_goodline((float const (*)[2])projectverts, f,
+ BM_elem_index_get(v1),
+ BM_elem_index_get(v2),
+ BM_elem_index_get(v3)))
+ {
/* We must check this tri would not leave a (too much) degenerated remaining face! */
/* For now just assume if the average of cos of all
* "remaining face"'s corners is below a given threshold, it's OK. */