js 判断一个点是否在一个三角形内部-摘自Stack Overflow

function sign (p1,  p2,  p3)
{
    return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
}

function PointInTriangle ( pt,  v1,  v2,  v3)
{
    let d1, d2, d3;
    let has_neg, has_pos;

    d1 = sign(pt, v1, v2);
    d2 = sign(pt, v2, v3);
    d3 = sign(pt, v3, v1);

    has_neg = (d1 < 0) || (d2 < 0) || (d3 < 0);
    has_pos = (d1 > 0) || (d2 > 0) || (d3 > 0);

    return !(has_neg && has_pos);
}
let pt = {
  x:1.0,
  y:0
}
let p1 = {
 x:0,
 y:0
}
let p2 = {
 x:0,
 y:1
}
let p3 = {
 x:1,
 y:0
}
console.log(PointInTriangle(pt,p1,p2,p3))

 

posted @ 2021-10-02 10:24  wangnima666  阅读(187)  评论(0编辑  收藏  举报