我有一个挑战,我正在尝试设计一个解决方案。这可能最适合 math事情的一面,但我希望有一个可能有用的预先存在的库或众所周知的算法。
简单地说,我有四个形状将被布置在一个网格中,我试图确定它们是否在端点对齐时连接。或者换句话说,想想成排的时钟。当一个时钟的指针指向另一个时钟的指针时,它们就“相连”了。为了进一步扩展类比,我只有 4 个“时间”:3:00、6:15、5:45、9:00(忽略可能是大手还是小手)。
出于讨论的目的,我们假设时钟按行对齐,因此可能存在有限的连接(在最终解决方案中,这些时钟将在网格中对齐)。
我尝试将各种数学概念应用于此,包括简单地识别象限或给手编号。目前,我正在使用一种位法,并从“中午”(或直接向上)开始以顺时针方式识别指针。我用 0 表示那个位置没有手,用 1 表示有手。
我创建了下面的图表来表示可用连接和无法连接的连接。我希望很明显,在图表的第 3 行和第 4 行中,那些具有连接的时钟将与“原始”时钟的左侧对齐。
阅读图表,以第一行为例。原始时钟将连接到“有连接”下的两个时钟(如果每个时钟都立即与原点右侧对齐)。 “无连接”时钟没有可能的连接,无论它是与原点的右侧还是左侧对齐。
这些数字是我目前尝试应用一种模式,但可能是转移注意力,因为它们似乎并没有真正为我设计算法提供任何帮助。根据需要使用或忽略它们。
综上所述,我愿意使用任何类型的技术,包括图形碰撞或任何可能使这更容易的预建库。我什至很快研究了有向图和矢量碰撞,但它似乎很快就演变成矫枉过正。
FWIW,我正在使用 Javascript 作为解决方案。
最佳答案
var clock1 = 6; // 0110
var clock2 = 3; // 0011
var direction = 4;
// 8 = clock2 is above clock1
// 4 = clock2 is to the right of clock1
// 2 = clock2 is below clock1
// 1 = clock2 is to the left of clock1
var connected = (clock2 * 4 % 15 & clock1 & direction) != 0;
关于javascript - 如何确定 "clock"形状连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35249432/