开发者社区> 小凡晓宇> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

autojs点积判断点是否在矩形内

简介: 牙叔教程 简单易
+关注继续查看

牙叔教程 简单易

image

如果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

公式

image

image

image

image


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文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
autojs之酷炫字体效果
使用场景 一个textview中, 展示不同的字体效果
44 0
autojs放大镜
autojs放大镜
25 0
autojs颜色渐变效果
牙叔教程 简单易学 使用场景 颜色渐变
17 0
autojs获取网页源代码
牙叔教程 简单易懂
56 0
autojs之通信
通信概念 两个主体, 相互之间交换信息
12 0
autojs之一键加密
使用场景 加密autojs
43 0
autojs提词器
拍短视频 ● 忘词 ● 记不住台词 有了提词器, 就再也不怕忘词儿了
19 0
autojs之超椭圆
使用场景 可视化 超椭圆系数 对 曲线 的作用
21 0
autojs随机名字
牙叔教程 简单易懂
39 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载