C# 通过二维数组快捷计算包含10个特征点的点数组(如Point[]点数组)所有点之间的距离并将距离放在一个二维数组里
时间: 2024-10-20 19:18:10 浏览: 22
C#实现对二维数组排序的方法
在C#中,你可以使用`Math.Pow`函数和数组操作来快速计算两个点之间的欧几里得距离,然后应用到所有特征点对上,将结果存入一个新的二维数组。这里是一个基本的示例:
```csharp
using System;
using System.Numerics;
class Point
{
public float X { get; set; }
public float Y { get; set; }
// 计算两点间的距离
public float DistanceTo(Point other)
{
return (float)Math.Sqrt(Math.Pow(this.X - other.X, 2) + Math.Pow(this.Y - other.Y, 2));
}
}
public class MainClass
{
static void Main()
{
Point[] featurePoints = new Point[10]; // 初始化你的10个特征点
// 假设points已经填充了数据
float[,] distancesArray = new float[featurePoints.Length, featurePoints.Length];
for (int i = 0; i < featurePoints.Length; i++)
{
for (int j = i; j < featurePoints.Length; j++) // 自身不与其他点比较,所以从i开始
{
distancesArray[i, j] = featurePoints[i].DistanceTo(featurePoints[j]);
distancesArray[j, i] = distancesArray[i, j]; // 对称性质,避免重复计算
}
}
// 打印或处理结果矩阵
Console.WriteLine("Distance matrix:");
for (int i = 0; i < distancesArray.GetLength(0); i++)
{
for (int j = 0; j < distancesArray.GetLength(1); j++)
{
Console.Write(distancesArray[i, j] + "\t");
}
Console.WriteLine();
}
//
阅读全文