判断点是否在三角形内
【判断点是否在三角形内】首先有三角形的三个点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);
}
推荐阅读
- FBI怎么和恐怖分子谈判
- 你是否也是一道风景()
- C语言解方程的根和判断是否是闰年
- 对今年以来股市的看法及后期判断
- 那一年我是否经历过高考
- 塔罗占卜(近期是否会遇到避不开的劫数(准爆了))
- vue中的条件判断详解v-if|vue中的条件判断详解v-if v-else v-else-if v-show
- 我们是否会娱乐至死()
- 韩信(工资是否应该透明)
- 这周你回家么()