Commit: 5ded8bc95ff82c465759d73dbd0678f4bc686a90 Author: Yiming Wu Date: Sat Dec 29 15:05:41 2018 +0800 Branches: soc-2018-npr https://developer.blender.org/rB5ded8bc95ff82c465759d73dbd0678f4bc686a90
Fix triangle-point test function for a stupid condition. See comment. =================================================================== M source/blender/draw/engines/lanpr/lanpr_ops.c =================================================================== diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c index 8eeb9ce78c4..840856502e8 100644 --- a/source/blender/draw/engines/lanpr/lanpr_ops.c +++ b/source/blender/draw/engines/lanpr/lanpr_ops.c @@ -981,12 +981,12 @@ int lanpr_point_triangle_relation(tnsVector2d v, tnsVector2d v0, tnsVector2d v1, cl = (v1[0] - v[0]) * (v2[1] - v[1]) - (v1[1] - v[1]) * (v2[0] - v[0]); if ((r = c * cl) < 0) return 0; - elif(r == 0) return 1; + //elif(r == 0) return 1; // removed, point could still be on the extention line of some edge else c = cl; cl = (v2[0] - v[0]) * (v0[1] - v[1]) - (v2[1] - v[1]) * (v0[0] - v[0]); if ((r = c * cl) < 0) return 0; - elif(r == 0) return 1; + //elif(r == 0) return 1; else c = cl; cl = (v0[0] - v[0]) * (v1[1] - v[1]) - (v0[1] - v[1]) * (v1[0] - v[0]); @@ -2132,7 +2132,7 @@ int lanpr_triangle_line_imagespace_intersection_v2(SpinLock *spl, LANPR_RenderTr *FBC1 = rt->V[1]->FrameBufferCoord, *FBC2 = rt->V[2]->FrameBufferCoord; - //printf("%f %f %f %f %f\n", FBC0[2], FBC1[2], FBC2[2], LFBC[2], RFBC[2]); + //printf("(%f %f)(%f %f)(%f %f) (%f %f)(%f %f)\n", FBC0[0], FBC0[1], FBC1[0], FBC1[1], FBC2[0], FBC2[1], LFBC[0], LFBC[1], RFBC[0], RFBC[1]); //bound box. //if (MIN3(FBC0[2], FBC1[2], FBC2[2]) > MAX2(LFBC[2], RFBC[2])) @@ -2153,6 +2153,8 @@ int lanpr_triangle_line_imagespace_intersection_v2(SpinLock *spl, LANPR_RenderTr c = lanpr_LineIntersectTest2d(LFBC, RFBC, FBC2, FBC0, &is[2]); //BLI_spin_unlock(spl); + //printf("abc: %d %d %d\n", a,b,c); + INTERSECT_SORT_MIN_TO_MAX_3(is[0], is[1], is[2], order); tMatVectorMinus3d(LV, rl->L->GLocation, rt->V[0]->GLocation); @@ -2306,18 +2308,21 @@ int lanpr_triangle_line_imagespace_intersection_v2(SpinLock *spl, LANPR_RenderTr *From = MAX2(0, is[LCross]); *To = MIN2(1, is[RCross]); if (*From >= *To) return 0; + //printf("1 From %f to %f\n",*From, *To); return 1; } elif(LF >= 0 && RF <= 0 && (DotL || DotR)) { *From = MAX2(Cut, is[LCross]); *To = MIN2(1, is[RCross]); if (*From >= *To) return 0; + //printf("2 From %f to %f\n",*From, *To); return 1; } elif(LF <= 0 && RF >= 0 && (DotL || DotR)) { *From = MAX2(0, is[LCross]); *To = MIN2(Cut, is[RCross]); if (*From >= *To) return 0; + //printf("3 From %f to %f\n",*From, *To); return 1; } else _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs