美文网首页
判断点是否在三角形内

判断点是否在三角形内

作者: 蘑菇酱960903 | 来源:发表于2018-03-28 15:55 被阅读0次

    首先有三角形的三个点a b c
    判断p点是否在三角形内
    利用向量的叉乘法
    ①先获取三个点abc的坐标,p的坐标
    ②计算出pa pb pc (向量 = 终点坐标-起点坐标)
    ③pa叉乘pb pa叉乘pc pb叉乘pc ,三者的值同为负号或者正号,即p点在三角形内 (叉乘公式:向量a的x坐标 * 向量b的y坐标 - 向量b的x坐标 * 向量a的y坐标)

    // 向量是终点坐标减去起点坐标
    function vector(a, b) {
      return {
        x: b.x - a.x,
        y: b.y - a.y
      };
    }
    
    // 向量的叉乘
    function vectorPro(v1, v2) {
      return v1.x * v2.y - v1.y * v2.x;
    }
    
    // 用位运算高效判断符号相同
    function sameSign(a, b) {
      return (a ^ b) >= 0;
    }
    
    // 判断点是否在三角形内
    function isPointInTranjgle(p, a, b, c) {
      var pa = vector(p, a);
      var pb = vector(p, b);
      var pc = vector(p, c);
    
      var t1 = vectorPro(pa, pb);
      var t2 = vectorPro(pb, pc);
      var t3 = vectorPro(pc, pa);
    
      return sameSign(t1, t2) && sameSign(t2, t3);
    }
    

    相关文章

      网友评论

          本文标题:判断点是否在三角形内

          本文链接:https://www.haomeiwen.com/subject/ffaycftx.html