我正在尝试实现一种折线简化算法。原始文章可以在此处找到: http://archive.is/Tzq2。这个算法的基本思想是:
- 计算每个点之间的三角形面积,若面积为0则删除该点。
- 从面积最小的点开始,比较其面积与阈值的大小,如果小于阈值,则将其从折线中删除。
- 移动到相邻的两个点并重新计算它们的面积。
- 回到步骤2,直到所有面积都小于阈值的点都被删除。
- 计算每个点的有效面积。 删除所有面积为零的点,并将其存储在单独的列表中。
- REPEAT
- 找到具有最小有效面积的点并将其称为当前点。如果它的计算面积小于上一个被消除的点的面积,请使用后者的面积。 (这样确保不能删除当前点而未删除先前已删除的点。)
- 从原始列表中删除当前点,并将其与其关联的面积一起添加到新列表中,以便在运行时对该线进行过滤。
- 重新计算相邻两个点的有效面积 (参见图1b)。
- UNTIL
- 原始线路仅由2个点组成,即起点和终点。