Home > SYS_Math > containsPoint
SYS_Math.containsPoint() method
判断点是否在多边形内部
签名
typescript
function containsPoint(polygon: TSYS_MathPolygonInput, point: ISYS_MathPoint): boolean;1
参数名
参数 | 类型 | 描述 |
|---|---|---|
polygon | 多边形 | |
point | 待判断的点 |
返回值
boolean
是否在多边形内部
备注
使用射线法(Ray Casting)判断点是否在多边形内部
由于射线法的特性,边界上的点行为不一致:部分边界上的点可能返回 true,部分可能返回 false, 具体取决于射线方向与边界的几何关系
如需严格判断点是否在边界上,请结合 SYS_Math.distanceToPoint() 判断距离是否为 0
示例
javascript
// 1. 定义一块禁布区,测试三个典型位置的点
const keepout = [{ x: 0, y: 0 }, { x: 100, y: 0 }, { x: 100, y: 80 }, { x: 0, y: 80 }];
const inside = { x: 50, y: 40 }; // 区域中心,明显在内部
const outside = { x: 150, y: 40 }; // 区域右侧,明显在外部
const corner = { x: 0, y: 0 }; // 顶点,落在边界上
console.log('中心点在禁布区内:', eda.sys_Math.containsPoint(keepout, inside));
console.log('外部点在禁布区内:', eda.sys_Math.containsPoint(keepout, outside));
console.log('顶点在禁布区内:', eda.sys_Math.containsPoint(keepout, corner));
// 2. 严格判断边界点:距离为 0 说明点恰好在边界上
console.log('顶点到边界的距离:', eda.sys_Math.distanceToPoint(keepout, corner));1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12