【发布时间】:2019-09-01 20:10:46
【问题描述】:
我正在考虑制作游戏Sprouts 的在线版本,可能使用 JavaScript 网络浏览器图形库 p5.js
您可以阅读更多关于它的信息,但基本上有 2 个玩家用鼠标在点之间画线。线条可以是直的或以任何方式弯曲。其中一条规则是两条线不能交叉。
我还没有开始制作游戏,但是提前计划好了,除了一个问题之外,一切似乎都相对容易完成:
当用户画一条线时,我需要弄清楚这条线是否与另一条线相交。但是,由于这些线不是线性的,也不是我习惯的任何数学方法,似乎没有一种简单的数学方法可以检查交叉点。
如果我知道线上每个像素的位置,我将如何检查两条这样的线是否交叉?
我为没有代码道歉,我还没有开始它。如果您希望在答案中包含代码,您可以使用 psuedocode 或您可能熟悉的任何 gui 编程。但是,我更喜欢纯粹假设的答案,因为一切都在这个阶段。
以下是我的一些想法:
- 对于线上的每个像素,我可以检查是否有任何其他线具有相同位置的像素,在这种情况下它们重叠。这似乎效率低下,所以以下几点是我想出的其他方法,它更有效但不那么僵化和可靠。
- 在绘制线条之前,如果您确保所有线条都是一种颜色,对于线条上的每个像素,您可以检查该像素是否已经与线条颜色相同,使用类似 @ 987654322@ 如果是这样,中止画线。这种解决方案似乎容易出现许多问题并且有点脆弱。
这两种解决方案要么以效率换取可靠性,要么反之。您还知道其他解决方案吗?请记住,这将在浏览器中运行,因此效率很重要。
【问题讨论】:
标签: user-interface intersection p5.js line-intersection