0

我知道这是更多的高中数学(哇,我在那里已经很久了)但我正在尝试以编程方式解决这个问题,所以我正在接触 stackoverflow 的集体知识

鉴于此布局:

替代文字

中点是我的参考点,在一个数组中我有所有其他点的向量点(P)

我可以通过将浅蓝色区域分成四个象限并进行蹩脚的冒泡排序来找到每个象限中的最大(y)或最低(x)值,从而达到这种状态。

我只需要找到外边界完全达到红色没有空白的象限。例如,左下角和右上角没有任何空白区域击中浅蓝色矩形。

我确信我的术语在这里都没有了,我不是在寻找任何特定的代码,但是如果有人可以为我指出一个更优化的解决方案来解决这个问题或者我已经拥有的下一步。

谢谢

4

2 回答 2

0

我可能会先做一些 BFI 解决方案,然后再将其推广或至少将其简化为表驱动循环。

所以,如果正是这些形状,而不是一般的解决方案,我认为你应该像这样进行:

  1. 导出蓝色矩形的坐标。我怀疑让您感到困惑的一件事是蓝色矩形具有每个单独的 x 和 y ,但是您不能轻松地遍历它们。

  2. 导出每个矩形边的中点坐标。你会需要这个,因为你关心象限。一旦你完成了 1,这将是微不足道的。

  3. 为每个 1/2 矩形边编写不同的代码。毫无疑问,有一种更聪明的方法,但这会得到工作代码。

  4. 如果你在乎的话,现在让它更优雅。我敢打赌,您可以将规则简化为一个 8 行表,其中包含 1、-1 或类似的东西。

于 2009-09-06T19:23:15.020 回答
0

首先,您不能通过单个向量定义红色区域,因为它是不相交的。您需要与远处红色区域数量相同的向量。

其次,我们是否假设不同的红色图形既不相交也不共享边界​​?在下一个条款中,我这样做了。

第三,根据第 2 点的假设,如果存在与其两个轴(即光线)相交的连续红色图形,则象限的外侧将全部为红色。要为所有象限确定这一点,您应该只按照给定的顺序遍历所有 (P) 点。这需要线性时间并解决了问题。

于 2009-09-06T19:58:23.107 回答