简单的数学算法:一条线的中心点

时间:2011-11-11 06:19:33

标签: algorithm math line point

我有一个算法如下找到一条线的中心(中点)。

public DoublePoint getMidPoint() {
    return new DoublePoint((origin.x + endPoint.x) / 2, (origin.y + endPoint.y) / 2);
}

它似乎适用于任何价值观。但我似乎记得一个更复杂的算法,涉及两个圆,其半径等于线的长度,其中心点是线的末端。从这些圆的交点绘制的线将与您正在测试的线段相交,从而得到线的中点。我确信算法可以100%的时间运行。不确定我的简单算法似乎简单。

5 个答案:

答案 0 :(得分:14)

您记得的是使用指南针和直尺构建线段的垂直平分线的几何方法。例如,考虑一下:

enter image description here

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

答案 1 :(得分:3)

你依稀记住的算法是使用直尺和指南针来获得中点。绘制取两个相等的半径圆,以线段的两端为中心,使它们相交 - 线段的长度可以。使用直尺连接圆相交的点。此线与原始线段相交的位置是中点。 http://www.mathopenref.com/constbisectline.html

的精彩动画

答案 2 :(得分:2)

您拥有的算法和代码是最简单,最好的方法。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

您的算法是将线条转换为原点的简化,找到由该线条表示的矢量,将其减半,然后将其平移回原始线条。简化是有效的,算法是正确的。