算法平滑曲线

时间:2013-07-08 09:30:20

标签: c# curve

我的曲线有很多点,导致GUI级别的速度减慢。我想应用一种算法来删除彼此距离太近的相邻点(在值方面,因此可以认为是无用的)

有没有任何着名的算法可以做到这一点?我正在使用C#和ZedGraph

2 个答案:

答案 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;

            });