Algorithm 简单的数学算法:直线的中心点

Algorithm 简单的数学算法:直线的中心点,algorithm,math,line,point,Algorithm,Math,Line,Point,我有一个如下的算法来寻找直线的中心(中点) 它似乎适用于任何价值观。但我似乎记得一个更复杂的算法,涉及两个半径等于直线长度的圆,其中心点是直线的端点。从这些圆的交点绘制的直线将与正在测试的线段相交,从而给出直线的中点。我确信算法在100%的情况下都是有效的。我不确定我的简单算法,它看起来太简单了。你的算法和代码是最简单也是最好的方法。你的算法是将直线转换到原点,找到该直线表示的向量,将其减半,然后将其转换回原始直线。简化是有效的,算法是正确的。您的简单算法完全正确。圆的方法是用一对圆规找到中点。

我有一个如下的算法来寻找直线的中心(中点)


它似乎适用于任何价值观。但我似乎记得一个更复杂的算法,涉及两个半径等于直线长度的圆,其中心点是直线的端点。从这些圆的交点绘制的直线将与正在测试的线段相交,从而给出直线的中点。我确信算法在100%的情况下都是有效的。我不确定我的简单算法,它看起来太简单了。

你的算法和代码是最简单也是最好的方法。

你的算法是将直线转换到原点,找到该直线表示的向量,将其减半,然后将其转换回原始直线。简化是有效的,算法是正确的。

您的简单算法完全正确。圆的方法是用一对圆规找到中点。

你模糊地记得的算法是用直尺和圆规获得中点。画两个半径相等的圆,以线段两端为中心,使它们相交——线段的长度就可以了。使用直尺连接圆相交的点。该直线与原始线段相交的位置是中点。你所记得的是一种几何方法,它只使用指南针和直尺构造线段的垂直平分线。例如,考虑:


这对古希腊人来说很好,但还有其他方法(比如你编写的那种)对计算机更有效。

那么,你真正的问题是什么?你在问另一种算法是什么,或者你的算法是否有效?我能在所有情况下都依赖我的简单算法吗?你描述的是通过线段中点以图形方式构造线段法线的方法。除非你的直线不直,否则这就是方法。是的,就是这样。。。更简单的算法适用于两点,因此我认为它适用于直线(因为直线由两点描述)。谢谢,这真是太疯狂了,因为我以前用过这个方法,就像教给我的一样,基本上是在白天用的。有趣的东西。谢谢
public DoublePoint getMidPoint() {
    return new DoublePoint((origin.x + endPoint.x) / 2, (origin.y + endPoint.y) / 2);
}