如何处理环绕网格的角落情况?

时间:2015-09-04 09:24:12

标签: algorithm

我想使用“无限”网格,其中通过左侧的独立移动点重新进入右侧的网格,反之亦然,顶部/底部相同。我的问题是如何处理角落案件。

我的想法:
1.使网格成矩形并假设角落属于较长边,但是我很难将一组点覆盖在角落的两边;
2.使网格侧的长度动态变化,并在需要时选择环绕侧,以便环绕始终为L-R或T-B
3.上述的混合,但环绕是对角相对的角和侧面,例如:假设点离开TL角,然后它重新进入BR角。但是这又将无法处理一组点 - 点独立移动,但必须保留明显的接近度。

有关如何处理此问题的任何想法/用例? (它甚至可能吗?)

1 个答案:

答案 0 :(得分:1)

将一个点移动到斜对角的角落有什么问题?也就是说,如果一个点进入正好一个角落,那么将它移动到对角线。如果一个点没有进入正好一个角落,而是一个靠近角落的一侧,那么只围绕那一侧进行包裹,如果一个点进入另一侧(通常是一个点正在移动)朝着一个角落但是错过了一个角落),然后把它包起来。

两个点在左上方向移动的示例:

+------+    +------+    +------+    +------+
|      |    |*o    |    |      |    |      |
| *o   |    |      |    |      |    |      |
|      | -> |      | -> |      | -> |    *o|
|      |    |      |    |o    *|    |      |
+------+    +------+    +------+    +------+

当然,你不应该担心在第三张图片上看到分离点。你的双方被包裹起来,所以这些点仍在相邻的牢房中。