我正在开发一个用javaScript / jQuery编写的游戏。我的部分代码在tile网格上绘制一个随机多边形(一个岛)。我需要检查一个点是否在多边形内。
我正在使用堆栈溢出中的several places中找到的多边形点交叉脚本(原始here)。这在Firefox中运行良好。在Chrome中,多边形内部有一些点,脚本说不在其中。
在Firefox中:
在Chrome中(岛屿不同,因为它们是随机生成的):
请在这里查看源代码,特别是pointPolygonIntersect函数: Point in Polygon Hit Test
有人能弄清楚为什么会这样吗?原始脚本是在C中,我使用的是JavaScript版本 - 这是否会导致问题?
答案 0 :(得分:2)
选择一个岛屿并坚持下去。跟踪两个浏览器中的代码并查看它们的不同之处。没有理由反对你可以轻易删除的随机性......
答案 1 :(得分: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;
}