using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// 假设原始点坐标集合为 points
List<Point> points = new List<Point>();
// 剔除相邻的点
List<Point> filteredPoints = FilterAdjacentPoints(points);
// 输出结果
Console.WriteLine("原始点坐标集合:");
foreach (var point in points)
{
Console.WriteLine($"({point.X}, {point.Y})");
}
Console.WriteLine("剔除相邻点后的点坐标集合:");
foreach (var point in filteredPoints)
{
Console.WriteLine($"({point.X}, {point.Y})");
}
}
// 剔除相邻的点
static List<Point> FilterAdjacentPoints(List<Point> points)
{
List<Point> filteredPoints = new List<Point>();
// 如果点集合为空或只有一个点,则直接返回
if (points.Count <= 1)
{
filteredPoints = points;
}
else
{
// 将第一个点添加到筛选后的点集合中
filteredPoints.Add(points[0]);
// 遍历剩余点的集合,只添加不与前一个点相邻的点
for (int i = 1; i < points.Count; i++)
{
if (points[i].DistanceTo(filteredPoints[filteredPoints.Count - 1]) > 0)
{
filteredPoints.Add(points[i]);
}
}
}
return filteredPoints;
}
}
// 点类
class Point
{
public int X { get; set; }
public int Y { get; set; }
// 计算点与另一个点之间的距离
public double DistanceTo(Point otherPoint)
{
return Math.Sqrt(Math.Pow(otherPoint.X - this.X, 2) + Math.Pow(otherPoint.Y - this.Y, 2));
}
}
C# 实现剔除相邻的点坐标集合
最新推荐文章于 2024-01-30 11:20:03 发布