0

私は現在、レース トラックのスケール SVG ファイルを取得し、データを使用してトラックをポイントの配列として近似するプログラムに取り組んでいます。理想的には、任意の 2 つの連続するポイント間の勾配の絶対値が同一であることが望ましいです。これにより、角度、弧の長さ、および半径を既知の精度に近似して、曲線の周囲の最大速度を計算する際に使用できるからです。

SVG は、2 つの制御点によるベジエ近似を使用します。始点、2 つの制御点、終点、およびパラメトリック変数 t を取る関数があります。ここでコードを見つけました: Drawing Bezier curve using De Casteljau Algorithm in C++ , OpenGL

私が望む結果は、ストレートは非常に少ない線分で構成され (勾配の変化はほとんどありません)、急なターンは多くの線分で構成されます (勾配が急激に変化します)。これにより、計算の精度が一定に保たれます。

t に一定のステップを使用しても、2 点間の勾配が一定にならないため、計算上の大きな問題になります。結果の線分の望ましい勾配を知っている正しい 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 に答える