You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript整数点在多边形内/边上判断:上边界忽略问题修复需求

整数点在多边形内/边上的判断:上边界遗漏问题解决

问题背景

在判断整数点[X,Y]是否位于多边形(支持凸多边形、凹多边形,顶点列表可闭合为[[X,Y],[X,Y],...,[X,Y]])内部或边上时,遇到了上边界(maxX、maxY对应的边和顶点)被忽略的问题。

示例场景:

point = [10,10]
polygon = [[0,0],[10,0],[10,10],[0,10]]

该点位于多边形的右上角顶点,但现有算法均返回false,只有将多边形所有maxX、maxY对应的坐标值加1后,才能正确识别该点为在多边形内。

我们的使用场景仅涉及整数坐标,用于游戏中判断玩家是否处于特定坐标区域并标记该区域。

临时解决方案

目前采用扩大上边界坐标的临时方法解决问题,代码如下:

function increaseUpperLimit( polygon ) {
  let maxX = -10000000
  let maxY = -10000000
  polygon.forEach(coordinate => {
    if(coordinate[0] > maxX)
      maxX = coordinate[0]
    if(coordinate[1] > maxY)
      maxY = coordinate[1]
  })
  polygon.forEach(coordinate => {
    if(coordinate[0] == maxX)
      coordinate[0] += 1
    if(coordinate[1] == maxY)
      coordinate[1] += 1
  })
  return polygon
}

但此方法属于临时 workaround,更理想的方式是直接修改原判断算法,使其原生支持包含上边界的X和Y坐标。

需求

寻求最优解决方案,确保所有位于多边形内部或边上的整数点都能返回true。


内容的提问来源于stack exchange,提问作者Nardwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:05:22