牙叔教程 简单易
如果E点在ABCD这个矩形内部, 那么AB和AE的夹角取值范围在0度到90度范围内;
且
BC和BE,
CD和CE,
DA和DE,
的夹角也必须在0度到90度这个范围内;
点积
a·b的几何意义为a在b上的投影长度乘以b的模长
a·b=|a||b|cosθ,其中θ为a,b之间的夹角
a·b=x1*x2+y1*y2;
点积的应用
(1)判断两个向量是否垂直 a⊥b <=> a·b=0
(2)求两个向量的夹角,点积<0为钝角,点积>0为锐角
把公式转换为js
公式
js
(B.x - A.x) * (E.x - A.x) + (B.y - A.y) * (E.y - A.y) >= 0; (C.x - B.x) * (E.x - B.x) + (C.y - B.y) * (E.y - B.y) >= 0; (D.x - C.x) * (E.x - C.x) + (D.y - C.y) * (E.y - C.y) >= 0; (A.x - D.x) * (E.x - D.x) + (A.y - D.y) * (E.y - D.y) >= 0;
封装为函数
function dotProduct(pointA, pointB, pointE) { return (pointB.x - pointA.x) * (pointE.x - pointA.x) + (pointB.y - pointA.y) * (pointE.y - pointA.y); }
function isPointInFourPoints(pointE, pointA, pointB, pointC, pointD) { let AB = dotProduct(pointA, pointB, pointE); let BC = dotProduct(pointB, pointC, pointE); let CD = dotProduct(pointC, pointD, pointE); let DA = dotProduct(pointD, pointA, pointE); return AB >= 0 && BC >= 0 && CD >= 0 && DA >= 0; }
验证函数是否正确
let pointA = { x: -1, y: 1, }; let pointB = { x: 1, y: 1, }; let pointC = { x: 1, y: -1, }; let pointD = { x: -1, y: -1, }; let pointE = { x: 0, y: 0, }; console.log(isPointInFourPoints(pointE, pointA, pointB, pointC, pointD));
完美! true
测试环境
手机: Mi 11 Pro
Android版本: 12
Autojs版本: 9.1.14
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途