C#一个List<Point[]>里有多个Point[]坐标,输出两两Point[]之间的最大最小距离及对应坐标
时间: 2024-10-05 21:01:33 浏览: 29
在C#中,如果你有一个`List<Point[]>`列表,其中每个元素是一个包含多个`Point`对象的数组,你可以通过遍历这个列表并计算每对相邻点之间的欧氏距离来找到最大和最小的距离以及对应的坐标。以下是基本步骤:
1. 定义一个比较函数,用于计算两个Point之间的欧氏距离(假设Point类已经包含了X和Y属性):
```csharp
public double Distance(Point p1, Point p2)
{
return Math.Sqrt(Math.Pow(p1.X - p2.X, 2) + Math.Pow(p1.Y - p2.Y, 2));
}
```
2. 初始化变量来存储最大和最小距离,以及它们对应的点:
```csharp
double maxDistance = 0;
Point maxCoord;
double minDistance = double.MaxValue;
Point minCoord;
```
3. 遍历列表,对于每个点数组内的相邻点,应用距离函数并更新最大值和最小值:
```csharp
foreach (int i = 0; i < list.Count - 1; i++)
{
foreach (var point in list[i])
{
for (int j = i + 1; j < list.Count; j++)
{
var nextPoint = list[j][0]; // 假设第一个点是当前子数组的第一个点
double currentDistance = Distance(point, nextPoint);
if (currentDistance > maxDistance)
{
maxDistance = currentDistance;
maxCoord = new Point(point.X, point.Y);
maxCoord2 = new Point(nextPoint.X, nextPoint.Y); // 如果你想记录下确切的坐标,这里应该保存nextPoint
}
else if (currentDistance < minDistance)
{
minDistance = currentDistance;
minCoord = new Point(point.X, point.Y);
minCoord2 = new Point(nextPoint.X, nextPoint.Y); // 同上
}
}
}
}
```
4. 最后,`maxDistance`、`minDistance`、`maxCoord` 和 `minCoord` 将分别持有最大的距离、最小的距离以及对应的坐标。
阅读全文