在面试的时候,时不时会遇到该问题,用代码写一个可以直接用的函数,以供大家参考:
1 pointInTriangle:function(x0, y0, x1, y1, x2, y2, x3, y3) { 2 var divisor = (y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3); 3 var a = ((y2 - y3)*(x0 - x3) + (x3 - x2)*(y0 - y3)) / divisor; 4 var b = ((y3 - y1)*(x0 - x3) + (x1 - x3)*(y0 - y3)) / divisor; 5 var c = 1 - a - b; 6 7 return a >= 0 && a <= 1 && b >= 0 && b <= 1 && c >= 0 && c <= 1; 8 },
x0, y0,为检测点。剩余三个点,为三角形的三个点。
当返回结果为true,则检测点在三角形上。如果为false,则点不在三角形上。