我搜索了这个并找到了类似的答案,但它们比基于编程更基于数学,我需要一些帮助将它放入代码中。
我有一个任意形状,但我们现在称之为钻石,其坐标如下:
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需要转移到???
如果你能提供帮助,非常感谢!
编辑:这似乎是答案,但我不是数学专家,也不知道它是如何转化为某种通用公式的。 How do you detect where two line segments intersect?