javascript - 如何确定 "clock"形状连接?

标签 javascript algorithm

我有一个挑战,我正在尝试设计一个解决方案。这可能最适合 math事情的一面,但我希望有一个可能有用的预先存在的库或众所周知的算法。 简单地说,我有四个形状将被布置在一个网格中,我试图确定它们是否在端点对齐时连接。或者换句话说,想想成排的时钟。当一个时钟的指针指向另一个时钟的指针时,它们就“相连”了。为了进一步扩展类比,我只有 4 个“时间”:3:00、6:15、5:45、9:00(忽略可能是大手还是小手)。 出于讨论的目的,我们假设时钟按行对齐,因此可能存在有限的连接(在最终解决方案中,这些时钟将在网格中对齐)。 我尝试将各种数学概念应用于此,包括简单地识别象限或给手编号。目前,我正在使用一种位法,并从“中午”(或直接向上)开始以顺时针方式识别指针。我用 0 表示那个位置没有手,用 1 表示有手。
All hands on deck

我创建了下面的图表来表示可用连接和无法连接的连接。我希望很明显,在图表的第 3 行和第 4 行中,那些具有连接的时钟将与“原始”时钟的左侧对齐。

Rows 1 and 2

Rows 3 and 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/

相关文章:

javascript - setTimeout() 并在谷歌地图上放置标记

javascript - 计算特定表上的行数

javascript - 使用 Protractor 访问 JS 作用域元素/变量

algorithm - 计算随机放在 table 上的卡片所覆盖的区域

c++ - std::vector 的 std::lower_bound 比 std::map::find 慢

java - Codility 钉板

algorithm - 红黑树

javascript - 带有 flex 子项的 Flex 包裹

javascript - highcharts/highstock 列不显示所有数据标签

python - 使用 NetworkX 的社区检测算法