3

我有很多点的曲线,导致 GUI 级别变慢。我想应用一种算法来删除彼此太近的相邻点(就值而言,因此可以认为是无用的)

有什么著名的算法可以做到这一点吗?我正在使用 C# 和 ZedGraph

4

2 回答 2

3

您可以使用Douglas-Peucker算法来减少点数并保存曲线形状。C# 实现可以在这里找到

于 2013-09-27T00:41:14.213 回答
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;

            });
于 2013-07-08T09:52:16.397 回答