将Bezier曲线解构为具有相等间距斜坡的线段

时间:2015-08-23 03:18:33

标签: c++ svg bezier parametric-equations

我目前正在制作一个程序,该程序采用比赛轨道的比例SVG文件,并使用该数据将轨道近似为点数组。理想情况下,任意两个连续点之间的斜率的绝对值将是相同的,因为这将允许我将角度,弧长和半径近似为已知精度,以用于计算曲线周围的最大速度。

SVG使用具有2个控制点的贝塞尔近似。我有一个函数,它采用起点,2个控制点和一个终点以及参数变量t。我在这里找到了这个代码: Drawing Bezier curves using De Casteljau Algorithm in C++ , OpenGL

我想要的结果是,直道将包含非常少的线段(斜率变化非常小),而急转弯将包含许多线段(斜率变化很大)。这样可以保持计算的准确性。

对t使用常数步长不会在两点之间提供恒定的斜率,这对于计算来说是一个巨大的问题。有没有办法找到正确的t值知道所得到的线段的期望斜率?

1 个答案:

答案 0 :(得分:1)

经过大量搜索和完善术语后,我发现了一个能够深入解释问题答案的网站。事实证明,我的问题与渲染Bezier曲线的引擎相同,而Anti-Grain Rendering Engine有一个精彩的教程,可以细分Bezier曲线来逼近各种曲折。

http://www.antigrain.com/research/adaptive_bezier/index.html