计算一组其他点的最远点

时间:2018-06-12 15:48:53

标签: c++ math

我正在开发一个模拟,我有一个具有设定高度和长度(例如,100米x 100米)的二维场。现在我在该字段中有一些点和x坐标和y坐标(不多,大约6或7)。现在我要计算(或简单地近似)该点,这是距离所有其他点最远的点。

在我对该主题的研究中,我发现了凸包的概念,我认为它不会帮助我,spherical Voronoi diagrams,坦率地说它不知道如何实现。

任何人都可以提示我一个可能的,更简单的解决方案或提出示例代码吗?我的目标是在C ++方法中实现它,输出点的x坐标和y坐标。

3 个答案:

答案 0 :(得分:0)

您可以将每个点与要比较的点的x坐标和y坐标的重心进行比较。

要获得代表您想要比较的所有点的点,您可以这样做:

#include <iostream>

using namespace std;

int main()
{
    int a, sumx = 0, sumy = 0 ;

       /* or use this
            int a,sum;
            sum = 0;
        */


    int arrayx[] = {1, 2, 3, 4, 5};
    int arrayy[] = {5, 5, 7, 9, 14};
    int length = 5;

    for (a=0; a<length; a++)
    {
        sumx+=arrayx[a];
        sumy+=arrayy[a];
    }

int gravx = sumx/length;
int gravy = sumy/length;

cout << "Grav of x = " << gravx << endl;
cout << "Grav of y = " << gravy << endl;

return 0;
}

你可以在这里试试代码: https://www.onlinegdb.com/online_c++_compiler

答案 1 :(得分:0)

This网站包含用于计算点的Voronoi图的算法的说明,以及zipfile中的C ++实现。如果我的数学直觉是正确的,那么距离100x100空间中任何一点的最远点应该是voronoi图中的一个顶点(如果你的空间边缘包括边缘)。因此,如果您计算图表然后测试图表的每个顶点,您应该找到最远的点。

答案 2 :(得分:-1)

我的方法:

准备一个距离矩阵,对于这7个点,您将拥有49个距离值。然后,写出每一行的值总和,或者您可以计算每一列的总和。总和最高的行(或列)的参考点是与数据集中所有其他点最接近的点。仅在有限数量的点上可以快速完成此操作。

Babu V Bassa。