0

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

SVG 使用具有 2 个控制点的 Bezier 近似。我有一个函数,它需要一个起点、2 个控制点和一个终点以及参数变量 t。我在这里找到了代码: 在 C++、OpenGL 中使用 De Casteljau 算法绘制贝塞尔曲线

我想要的结果是直道将由很少的线段组成(坡度变化很小),而急转弯将由许多线段组成(坡度变化很大)。这将在计算中保持恒定的准确性。

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

4

1 回答 1

1

经过大量搜索和优化术语,我找到了一个网站,可以深入解释我的问题的答案。事实证明,我的问题与绘制贝塞尔曲线的渲染引擎所面临的问题相同,Anti-Grain Rendering Engine 有一个关于细分贝塞尔曲线以近似各种曲折的精彩教程。

https://web.archive.org/web/20180307160123/http://antigrain.com/research/adaptive_bezier/index.html

于 2015-08-23T19:36:40.967 回答