将贝塞尔曲线分解为具有等间距斜率的线段
Deconstruct Bezier Curve into Line Segments with Equally Spaced Slopes
我目前正在编写一个程序,该程序接受赛道的缩放SVG文件,并使用数据将赛道近似为点数组。理想情况下,任何两个连续点之间的斜率的绝对值应该是相同的,因为这将允许我近似的角度,弧长和半径,以已知的精度用于计算曲线周围的最大速度。
SVG使用具有2个控制点的Bezier近似。我有一个函数,它有一个起点,两个控制点和一个终点,还有参数变量t。我在这里找到了这个函数的代码:在c++, OpenGL中使用De Casteljau算法绘制Bezier曲线
我想要的结果是直线将由很少的线段组成(坡度变化很小),而急转弯将由许多线段组成(坡度变化很大)。这将使计算保持恒定的精度。
对t使用恒定步长不能提供两点之间的恒定斜率,这对计算来说是一个大问题。是否有办法找到正确的t值知道期望的斜率得到的线段?
经过大量的搜索和精炼,我找到了一个网站,它深入地解释了我的问题的答案。事实证明,我的问题与绘制贝塞尔曲线的渲染引擎所面临的问题相同,而反颗粒渲染引擎有一个关于细分贝塞尔曲线以近似各种曲折的精彩教程。
https://web.archive.org/web/20180307160123/http://antigrain.com/research/adaptive_bezier/index.html
相关文章:
- CGAL:如何创建填充边界曲线的曲面网格?
- 使用 SFML 绘制曲线会给出错误的形状
- 使用 GSL 库制作样条曲线并使用它们进行集成
- 扩充矩阵的行缩减-三维样条曲线计算
- 向心Catmull-Rom样条曲线插值alpha参数
- 使用 C++ 在 Qt5 中显示曲线
- Hermite曲线中的切线值
- c 击曲线在代表前打电话给COUT
- 创建给定最小值、最大值和长度的曲线
- 使用 c++ 在 OpenGL 中绘制贝塞尔曲线的切线
- 当对象脱离范围时,C 会调用击曲线吗?
- 在QGraphicsView上实现交互式样条曲线的最佳方法是什么?
- 将 openCv 中的曲线从 ROI 转换为帧
- 我的贝塞尔曲线有什么问题?
- 您如何使形状沿着更BE的曲线SFML移动
- 从第二个导数计算的曲线的SIMD优化
- 即使在同一类型上,也可以将击曲线调用新的位置
- 使用QWTPlotCurve进行有效的曲线绘图
- 引导零曲线只有一个除法日期和一个除法金额
- 将贝塞尔曲线分解为具有等间距斜率的线段