如何为圆圈生成一组避免指定区域的坐标?

时间:2018-05-18 01:11:40

标签: javascript math 2d

我正在开发2D游戏,而且safespawn并不是很好。当前系统获取随机坐标并检查碰撞,如果位置与另一个对象发生碰撞,则再次尝试。在15次尝试失败后,它将放弃并在另一个对象之上生成。我想知道是否有办法创建一个公式来计算一组位置之外的位置。例如,假设我有这个数组:

var coveredArea = [
    {x: 200, y: 100, r: 50}
    {x: 100, y: 300, r: 50}
    {x: 300, y: 200, r: 50}
];

对于直观表示,让我们说画布如下所示:https://i.imgur.com/ZfPPL4P.png

我想制作一个公式来计算这些对象之外的位置,而无需随机猜测和检查。这可能吗?我希望在这里得到一个基本想法,如果一个解决方案过于复杂而不能放弃,它将引导我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:0)

如果场景尺寸合理,禁止的物体不会频繁改变位置,你必须执行许多查询,最简单,最快的是地图方法:

制作位图,用黑色填充并绘制所有填充白色的对象(如果需要区分不同的对象,请按特定颜色#000001,#000002等绘制)。

然后只需检查所需坐标中的像素颜色。

如果您有特定的圆半径(不仅仅是点),则使用宽笔作为图形边框(lineWidth = 2 * R + 1,lineJoin = round)