我正在为ios开发一个绘画应用程序,为了获得平滑的线条,我应用了采样点的ramer-douglas-peucker算法。
该算法对点的整个矢量进行运算,结果随点的增加而变化。它会导致结果曲线在用户绘制时“跳跃”。
这个问题有已知的解决办法吗?
最佳答案
我从未实现或使用过此算法,但我可以想到两种可能的解决方案:
将该算法应用于直线的离散段也就是说,等到用户画出10个点,然后在0..9点上运行算法然后等到用户画出接下来的10个点,然后在点10..19上运行算法,依此类推一个可能的警告是,它可能会在第10点、第20点等处产生副作用,但我真的不知道它是否会引起用户的注意。
等到用户完成绘图,然后在整行上运行该算法一次。我以前在应用程序中见过这种方法。
这两种方法的优点是,在每个点上运行算法的次数不超过两次(在后一种情况下只运行一次),而如果每次添加一个点时都运行算法,则每次添加一个点时都会在前一个点上运行算法,这可能会造成性能损失。
就像我说的,这对我来说不是一个专业领域,但我希望它能给你一些想法。