判断点是否在一个矩形内
判断是否在矩形内:
只需要判断该点是否在上下两条边和左右两条边之间就行。
判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图
只要判断(AB X AE ) * (CDX CE) >= 0 就说明E在AD和BC中间夹着,同理(DA X DE ) * (BC X BE) >= 0计算另两边AB,CD就可以了。(备注可进一步学习:向量点乘,叉乘的意义和几何意义 )
最后就是只需要判断
(AB X AE ) * (CD X CE) >= 0 && (DA X DE ) * (BC X BE) >= 0 。
参考代码:
1 // 计算 |p1 p2| X |p1 p| 2 function GetCross(p1: Point, p2: Point, p: Point) { 3 return (p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y); 4 } 5 //判断点p是否在p1p2p3p4的正方形内 6 function IsPointInMatrix(p1: Point, p2: Point, p3: Point, p4: Point, p: Point) { 7 let isPointIn = GetCross(p1, p2, p) * GetCross(p3, p4, p) >= 0 && GetCross(p2, p3, p) * GetCross(p4, p1, p) >= 0; 8 return isPointIn; 9 }
分类:
JavaScript
, 计算机图形学
标签:
javascript
, 几何计算
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤