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

判断点是否在三角形内

作者: 蘑菇酱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);
}

相关文章

  • 判断点是否在三角形内

    首先有三角形的三个点a b c判断p点是否在三角形内利用向量的叉乘法①先获取三个点abc的坐标,p的坐标②计算...

  • 向量的叉积

    它可以用来判断点在直线的某侧。进而可以解决点是否在三角形内,两个矩形是否重叠等问题。向量的叉积的模表示这两个向量围...

  • 算法训练营 10.15

    In-Triangle Test 计算几何,判断一个点是否在三角形内.把三条边转化为有向线段,当然大多数时候我们习...

  • RxJava+OkHttp3实现文件断点续传

    一、联网获取所需下载文件的长度 二、构建缓存文件(遍历缓存目录里的文件判断文件是否可以断点续传) 判该文件是否可以...

  • 判断点是否在面内

    原文 https://blog.csdn.net/superdog007/article/details/5340...

  • 点是否在三角形内——来自《编程之美》

    问题:如果在一个二维坐标系中,已知三角形三个点的坐标,那么对于坐标系中的任意一点,如何判断该点是否在三角形内(点在...

  • 图形学自问自答2——点在三角形内部判定

    如何判定一个点是否在三角形内部 光栅化的关键步骤是计算某个三角形覆盖到了哪些像素,需要依次判断每个像素的中心是否在...

  • 笔试刷题-百度2018-06-19

    题目描述: 思路如下: 把点按颜色分组,然后遍历组内三角形和组间三角形判断3点是否共线 等价于 判断3点是否能组成...

  • 做赢孩子还是赢得孩子的父母

    每个孩子都是独一无二,他们的三角形内的数字有他们的天赋性格,而她们在三角形外的要去把他们补充完整。如果我们不去理解...

  • 地图内多边形

    在地图内绘制多边形,判断点是否在多边形内 isContainsPoint(point)传入当前经纬度po是多边形的...

网友评论

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

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