我知道这是更高中的数学(自从我在那里以来已经很久了)但我试图以编程方式解决这个问题所以我正在接触stackoverflow的集体知识
鉴于此布局:
中点是我的参考点,在数组中我有所有其他点的矢量点(P)
我可以使用淡蓝色区域的代码进入这个状态,将其分成四个象限并进行蹩脚的冒泡排序以找到每个象限中的最大(y)或最低(x)值。
我只需找到外边框完全击中红色而没有空白区域的象限。例如,左下角和右上角没有任何白色空间碰到浅蓝色矩形。
我确信我的术语全部都在这里,我不是在寻找任何具体的代码,但如果有人能够指出我针对这个问题的更优化的解决方案,或者我已经拥有的下一步。
谢谢
答案 0 :(得分:0)
我可能先做一些BFI解决方案,然后或许看一下它,或者至少把它减少到一个表驱动循环。
所以,如果它正是这些形状,而不是一般解决方案,我认为你应该这样做:
导出蓝色矩形的坐标 。我怀疑有一件令你困惑的事情是你有蓝色矩形的每个x和y,但是你不能轻易地遍历它们。
导出每个矩形边缘中点的坐标。 您需要这个,因为您关心象限。一旦完成1,这将是微不足道的。
为每个1/2矩形边写下不同的代码。 毫无疑问,这将是一个更聪明的方法,但这将获得正常工作的代码。
如果你愿意,现在让它更优雅。 我敢打赌你可以将规则减少到8排 表格中包含1,-1或类似的内容。
答案 1 :(得分:0)
首先,您无法通过单个矢量定义红色区域,因为它是不相交的。您需要与远红区数相同的矢量数。
第二,我们是否假设不同的红色数字既不相交也不共享边界?在下一个条款中,我做了。
第三,在第2点的假设下,象限将具有全部红色外侧,如果存在与其两个轴(即光线)相交的连续红色图形。要确定所有象限的这一点,您应该只按它们给出的顺序遍历所有(P)点。这需要线性时间并解决问题。