Fix T37510 Knife missed cuts on small faces.

For very thin faces, knife sometimes missed cutting a few.
Problem was that a test for edges being totally inside a face
was being applied in inappropriate circumstances. An assumed
invariant about the knife hit structure is not true when
actually in the middle of making cuts.
Also make a 'big epsilon' a little smaller, though don't think
that was the problem in this bug.
This commit is contained in:
Howard Trickey 2014-03-06 10:55:12 -05:00
parent d4ad050632
commit c1be7e12ee
Notes: blender-bot 2023-02-14 11:35:46 +01:00
Referenced by issue #37510, Knife tool not working properly
1 changed files with 2 additions and 2 deletions

View File

@ -77,7 +77,7 @@
#define KNIFE_FLT_EPS 0.00001f
#define KNIFE_FLT_EPS_SQUARED (KNIFE_FLT_EPS * KNIFE_FLT_EPS)
#define KNIFE_FLT_EPSBIG 0.001f
#define KNIFE_FLT_EPSBIG 0.0005f
typedef struct KnifeColors {
unsigned char line[3];
@ -653,7 +653,7 @@ static void knife_add_single_cut(KnifeTool_OpData *kcd, KnifeLineHit *lh1, Knife
}
/* Check if edge actually lies within face (might not, if this face is concave) */
if (lh1->v && lh2->v) {
if ((lh1->v && !lh1->kfe) && (lh2->v && !lh2->kfe)) {
if (!knife_verts_edge_in_face(lh1->v, lh2->v, f)) {
return;
}