【发布时间】:2019-01-27 03:19:07
【问题描述】:
我试图通过比较pointsToSearchFrom 列表中每个点与pointCloudToSearchList 中其他点的距离来检索集合中最远的点。您可以从所附图像中看到示例场景。我仍然不是导航这些数据结构的专家,而且这个算法超出了我目前遍历二维数组的知识。
这是我知道的代码。任何帮助都会很棒。
public static void Test(List<Point3d> pointsToSearchFrom, List<Point3d> pointCloudToSearch)
{
int rows = pointsToSearchFrom.Count;
int columns = pointCloudToSearch.Count;
double[,] arrayDistance = new double [rows, columns];
for (int i = 0; i < pointsToSearchFrom.Count; i++)
{
for (int j = 0; j < pointCloudToSearch.Count; j++)
{
arrayDistance[i, j] = (pointsToSearchFrom[i] - pointCloudToSearch[j]).magnitude;
}
}
}
【问题讨论】:
-
这是作业吗?但是,嘿,你快到了,我相信你可以用两个
for进行迭代,就像你如何计算点之间的距离并找到最大值或最小值一样。但是,如果您只关心最大或最小距离,则可以转储找到的最大i和j点,如果距离大于前一个距离,则更新它。 -
不,这不是家庭作业,哈哈,这只是我想做的个人工作,但我不是编码方面的专业人士。是的,最小或最大距离是直前言,但是我不知道如何根据距离检索pointsToSearchFromList中最远的点
-
所以你这里有两组点。您希望形成所有可能的点对,其中第一个来自第一组,第二个来自第二组。从这组对中,您希望找到使点之间的欧几里得距离最大化的对?
-
@EricLippert 是的,没错。我需要做的下一步是对存储在每行中的所有距离进行排序,然后选择每行上最长的距离,这将产生一个 9X1
Array,然后可以转换为List,因此它与pointsToSearchFrom具有相同的数据结构。然后我可以找到距离最远的项目的索引,并用它来检索我离pointsToSearchFrom最远的点。但我似乎无法想出一种方法来对每一行的数据进行排序。