4

我正在开发一个用 javaScript / jQuery 编写的游戏。我的部分代码在平铺网格上绘制了一个随机多边形(一个岛)。我需要检查一个点是否在多边形内。

我正在使用一个多边形交叉点脚本,我在 Stack Overflow的几个 地方找到了该脚本(此处为原文)。这在 Firefox 中运行良好。在 Chrome 中,脚本所说的多边形内有一些点不在其中。

在火狐中: 在此处输入图像描述

在 Chrome 中(岛是不同的,因为它们是随机生成的): 在此处输入图像描述

请看这里的源代码,特别是 pointPolygonIntersect 函数: Point in Polygon Hit Test

谁能弄清楚为什么会这样?原始脚本是 C 语言,我使用的是 JavaScript 版本 - 这会导致问题吗?

4

2 回答 2

2

选择一个岛屿并坚持下去。跟踪两个浏览器中的代码并查看它们的不同之处。没有理由与您可以轻松消除的随机性作斗争......

于 2011-06-30T02:43:17.180 回答
0

我快速浏览了一下。无法跟踪应用程序流程,但看起来很奇怪的是

c = !c;

行代码。如果第一次满足条件,为什么不直接将其设置为true,或者直接返回true?我假设,chrome 变为“true”,然后在下次它在 x/y 范围内时反转它。

我不熟悉 Raphael 或 SVG,但看起来你的多边形是正方形,因此你可以做一个简单的测试

//original found here http://www.gamedev.net/topic/483716-point-inside-of-rectangle/
function inside( x, y, l, r, b, t ){ //x,y are the point, l,r,b,t are the extents of the rectangle
    return x > l && x < r && y > b && y < t;
}
于 2011-06-30T00:08:05.557 回答