js 判断一个点是否在三角形中

在面试的时候,时不时会遇到该问题,用代码写一个可以直接用的函数,以供大家参考:

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,则点不在三角形上。

posted @ 2021-02-02 19:18  饭桶大叔  阅读(385)  评论(0编辑  收藏  举报