我有很多点的曲线,导致 GUI 级别变慢。我想应用一种算法来删除彼此太近的相邻点(就值而言,因此可以认为是无用的)
有什么著名的算法可以做到这一点吗?我正在使用 C# 和 ZedGraph
您可以使用Douglas-Peucker算法来减少点数并保存曲线形状。C# 实现可以在这里找到
我不是专业人士,但我认为你可以在没有任何著名算法的情况下做到这一点。这是我的想法(只是一个原则,因为我不知道您将积分存储在哪个班级):
Collection<float> ListOfValues = new Collection<float>();
float minimalValueDistance = 0.5f;
var listWithoutAdjacentPoints = ListOfValues.Where(x =>
{
int indexOfValue = ListOfValues.IndexOf(x);
// only considering the distance from the left
if (indexOfValue > 0 && Math.Abs(x - ListOfValues[indexOfValue - 1]) > minimalValueDistance)
return true;
else
return false;
});