判断点是否在三角形内

【判断点是否在三角形内】首先有三角形的三个点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); }

    推荐阅读