将两点之间的曲线转换为直线连接

Convert curved line between two points to straight connection

我有两个点 p1 和 p2 以及线 l(黑色)。该线由 100 多个内部点组成,排列成从 p1 到 p2 的数组。

现在,我想将曲线转换为 "straight" 线,如上图中的红线。但是,我有点不确定该怎么做。

到目前为止,我的想法是以固定距离迭代线(例如从开始取所有点并向前100像素),计算线的曲线,如果超过阈值,则使直线改变方向,然后迭代下一部分,依此类推。我不确定这是否会按预期工作。

另一个想法是制作一个贪婪算法,试图最小化黑线和红线之间的距离。但是,这可能会导致我想避免的小步骤。可以通过使转弯成本高昂来避免这些步骤。

是否有关于这个特定问题的算法,或者您将如何解决它?

搜索短语多边形链简化,您会发现有很多关于此主题的文献。 这是一份可以引导您找到其他人的参考资料:

Buzer, Lilian. "Optimal simplification of polygonal chains for subpixel-accurate rendering." Computational Geometry 42.1 (2009): 45-59.