文章

道格拉斯-普克算法(Douglas–Peucker algorithm)

道格拉斯-普克算法(Douglas–Peucker algorithm),又称为Ramer-Douglas-Peucker算法,是一种用于简化曲线的算法。它通过减少曲线上的点数来近似表示原始曲线,同时尽量保持其形状和特征。可以应用于计算机图形学、地理信息系统(GIS)、甚至CAD领域。

算法的具体实现逻辑如下:

  1. 在轨迹曲线在曲线首尾两点AB之间连接一条直线AB,该直线为曲线的弦;
  2. 遍历曲线上其他所有点,求每个点到直线AB的距离,找到最大距离的点C,最大距离记为maxDistance
  3. 比较该距离maxDistance与预先定义的阈值epsilon大小,如果maxDistance < epsilon,则将该直线AB作为曲线段的近似,舍去AB之间的所有点,曲线段处理完毕;
  4. maxDistance >= epsilon,则使C点将曲线AB分为ACCB两段,并分别对这两段进行(1)~(3)步处理;
  5. 当所有曲线都处理完毕时,依次连接各个分割点形成的折线,即为原始曲线的路径。

Douglas-Peucker Algorithm Illustration

本文由作者按照 CC BY 4.0 进行授权