检查是否在随机框内点

时间:2017-06-16 12:21:13

标签: algorithm geometry

编辑:我已经找到了解决方案。如果您将来遇到此问题,请随时与我联系,并需要类似的东西。

-

不是在平面上生成随机点,而是如何检查给定坐标是否等于随机点?或者在随机边界框内?

例如,您有一个带整数坐标的平面。该平面以某种方式填充了随机边界框(使用公式生成,而不是数据)。目标是检查给定(x,y)是否在其中一个框内。

我可以找到许多关于如何生成随机点的参考文献,但对于以这种更向后的方式进行操作并不多(我猜你称之为'功能性'?)。

我设法制作了一个算法,将平面分成100x100个方格,每个方格内都是一个随机放置的边界框。但是,使用算法可以更有机地放置盒子吗?

编辑:这是我用于100x100网格内的简单随机点的示例算法" (从记忆中,可能会遗漏一些东西):

// check if equal to a random point within the point's grid square
boolean isRandomCenter(x, y) {
    // offset relative to origin of grid square
    int offsetX = x mod 100
    int offsetY = y mod 100

    // any random seed will do
    int randomSeed = x * y

    // random position of point for this square
    int randomOffsetX = random(50, randomSeed)
    int randomOffsetY = random(50, randomSeed)

    if (offsetX == randomOffsetX && offsetY == randomOFfsetY)
        return true

    return false
}

2 个答案:

答案 0 :(得分:1)

嗯,我不知道我是否完全理解你的问题,但知道在两个轴x和y表示的二维欧几里德空间中绘制的给定点M(x,y)是否在一个盒子内的条件用两个相反的点表示A(xa,ya)和B(xb,yb)非常简单。

让我们定义一个函数isInsideTheBox(x,y,xa,ya,xb,yb)返回show . read如果M在框内,true则为:

false

答案 1 :(得分:1)

我正在回答这个问题:检查一个点是否在一个随机点上。

如果坐标是真实的,重叠的概率为空,问题实际上是无用的。所以我假设离散坐标。

如果问题涉及已经绘制的随机点,唯一的方法是在绘制它们时记住某个容器中的随机点(数组,排序,列表,搜索树,哈希表)。

如果问题涉及可能在该位置绘制的点,则答案为" true"在整个域中(分布非零)。您需要在几何上对域进行建模以执行point-in -...查询。

如果问题是关于伪随机点或准随机点,我不认为有任何捷径,你应该继续进行真正随机的情况(除非发电机真的很差)。