我的曲线有很多点,导致GUI级别的速度减慢。我想应用一种算法来删除彼此距离太近的相邻点(在值方面,因此可以认为是无用的)
有没有任何着名的算法可以做到这一点?我正在使用C#和ZedGraph
答案 0 :(得分:2)
您可以使用Douglas-Peucker算法减少点数并保存曲线形状。可以找到C#实现here
答案 1 :(得分:0)
我不是专业人士,但我认为你可以在没有任何着名算法的情况下做到这一点。 这就是我的想法(只是一个原则,因为我不知道你在哪个类中存储你的积分):
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;
});