我正在开发一个模拟,我有一个具有设定高度和长度(例如,100米x 100米)的二维场。现在我在该字段中有一些点和x坐标和y坐标(不多,大约6或7)。现在我要计算(或简单地近似)该点,这是距离所有其他点最远的点。
在我对该主题的研究中,我发现了凸包的概念,我认为它不会帮助我,spherical Voronoi diagrams,坦率地说它不知道如何实现。
任何人都可以提示我一个可能的,更简单的解决方案或提出示例代码吗?我的目标是在C ++方法中实现它,输出点的x坐标和y坐标。
答案 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。