我搜索了这个并找到了类似的答案,但它们更多地基于数学而不是基于编程,我需要一些帮助来将其放入代码中。
我有一个任意形状,但我们暂时称它为菱形,坐标如下:
A = (0,0)
B = (50, 50)
C = (0, 100)
D = (-50, 50)
想一想这方面的运动约束,就好像你有一根橡皮筋并移动了一个钉子。这些线将始终连接,但它们彼此的方向不得改变。因此,由于 AB 的斜率为 1,它需要保持为 1。我的那部分工作正常。
现在,假设我移动“B”,使其停留在 (100, 100)。我知道 AB(不变)、BC(在 B 被移动之前和之后,但之后是无用和错误的)、CD(不变)和 DA(不变)的斜率。我也知道 A、B 和 D 的坐标。我需要找到 C 的位置,以使所有斜率保持不变,并且它位于 BC 和 CD 应该相交的逻辑点。
从数学上讲,我现在知道 C 属于 (50, 150),但我需要一个通用公式来解决这个问题。这是一个单独的例子,所以我正在寻找的是足够通用的东西,可以重用。当然,当线条平行或垂直时会有障碍,但我可以处理。
这张图片应该有助于将其可视化。B 从“B”开始,我将其移至“B2”。C 需要移动到 ???
如果你能帮忙的话,非常感谢!
编辑:这似乎是答案,但我不是一个数学高手,不明白它是如何转化为某种通用公式的。 你如何检测两条线段相交的位置?