我用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之间的距离想要计算此数组中所有点之间的距离 . 我怎么做?
4 回答
我输入这个代码解决了这个问题k = points.length()
你可能想要两次完成数组 .
显然,你可以简单地运行两个相同长度的循环,但这会给你两次相同的结果 . 当
i
和j
具有相同的值翻转时(i = 10
,j = 15
和更高版本i = 15
和j = 10
),您可以执行相同的计算以获得相同的结果 . 为了防止我有我的第二个循环只运行大约一半的值不重做计算 .CalculateDistance方法与之前编写的代码完全相同,在我的例子中如下:
这样我就可以随时重复使用和重新排序计算,因为我只需要移动一行 . 请注意,您始终可以使用浮点数作为参数而不是本地数据,但我觉得这样会在此示例中使其更具可读性 .
当距离相等时我也跳过了计算,因为比较了相同的值 .
你必须使用2 for循环来实现这一点 .
你也想在某些地方保持这些点之间的欧氏距离 .
你必须使用2个循环 . 第一个循环将值赋给X1,第二个循环将值赋给X2 .
这允许计算阵列中不连续的两个点之间的欧几里德距离 .