【发布时间】:2018-12-09 09:07:08
【问题描述】:
我在 c# 中计算欧几里得距离。
Point[] points = new Point[100];
我有我在这个数组中创建的点的坐标。我想计算所有点之间的距离。
for (int i = 1; i < k+1; i++)
{
X1 = points[i].X;
X2 = points[i + 1].X;
Y1 = points[i].Y;
Y2 = points[i + 1].Y;
result = Math.Sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));
}
使用此代码,我计算了点之间的距离(例如:点 a 和 b 之间的距离,点 c 和 d 之间的距离等),但我无法计算点 a 和 c 或点 b 之间的距离b 我想计算这个数组中所有点之间的距离。我该怎么做?
【问题讨论】:
-
你的代码需要做两件事: 1)选择两个点来计算距离; 2)计算这些点之间的距离。听起来问题确实出在第 1 部分,而不是第 2 部分。使这一点更清晰的一种方法是将距离计算分离为一种方法,例如
double CalculateDistance(Point p1, Point p2)。然后,您可以将所有精力都集中在确定要比较的点上。 (提示:您可能需要两个循环。我还建议使用基于 0 的计数器,因为这就是数组等在 C# 中自然工作的方式。)
标签: c# arrays point euclidean-distance