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:
authorHoward Trickey <howard.trickey@gmail.com>2012-09-03 18:37:34 +0400
committerHoward Trickey <howard.trickey@gmail.com>2012-09-03 18:37:34 +0400
commit5c2d9022d9c4f0310057f942afdf5daea634502c (patch)
tree07dfb8b3c15d9c098ed9e9d4b1435be265b027b4 /source/blender/bmesh
parenteff97a82f8aa7a847846275577b8e67559cfa7ea (diff)
Fix knife bug #30764, failure to cut sometimes.
Two bugs: first, the point-in-face function had a bug that made it fail for the xz or yz planes. Second, in ortho mode, simultaneous linehits need careful sorting. Also, in orth mode it is somewhat random whether the edges exactly behind the front ones are reported 'hit' by bvh tree, so put in code to prevent cuts along the parallel-to-view faces when not in cut-through mode.
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/intern/bmesh_polygon.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c
index 807570f0d86..1d056dbfae7 100644
--- a/source/blender/bmesh/intern/bmesh_polygon.c
+++ b/source/blender/bmesh/intern/bmesh_polygon.c
@@ -606,11 +606,11 @@ int BM_face_point_inside_test(BMFace *f, const float co[3])
do {
float v1[2], v2[2];
- v1[0] = (l_iter->prev->v->co[ax] - cent[ax]) * onepluseps + cent[ax];
- v1[1] = (l_iter->prev->v->co[ay] - cent[ay]) * onepluseps + cent[ay];
+ v1[0] = (l_iter->prev->v->co[ax] - cent[0]) * onepluseps + cent[0];
+ v1[1] = (l_iter->prev->v->co[ay] - cent[1]) * onepluseps + cent[1];
- v2[0] = (l_iter->v->co[ax] - cent[ax]) * onepluseps + cent[ax];
- v2[1] = (l_iter->v->co[ay] - cent[ay]) * onepluseps + cent[ay];
+ v2[0] = (l_iter->v->co[ax] - cent[0]) * onepluseps + cent[0];
+ v2[1] = (l_iter->v->co[ay] - cent[1]) * onepluseps + cent[1];
crosses += linecrossesf(v1, v2, co2, out) != 0;
} while ((l_iter = l_iter->next) != l_first);