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/bmesh_polygon.c
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/bmesh_polygon.c')
-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. */