1

私はたくさんグーグルで調べましたが、私が見つけたすべてのアルゴリズムは、コントロールポイントを見つけるために方程式を使用していました. 私はそれを行うためのより簡単な解決策があると考え、ExtJS ソースコードでいくつかの実装を見つけました:http: //docs-devel.sencha.com/extjs/4.1.2/source/Draw.html#Ext-draw-Draw method-getAnchors . ラインの最も近いポイント間の角度を使用して、コントロール ポイントといくつかのハックを検出します。

これがコントロール ポイントを検索するためのアルゴリズムの種類を誰か定義できますか? 私は、PI と角度の操作で立ち往生しています。問題を解決するこの方法について、より詳細で明確な説明、または一般的なアイデアがあるのではないでしょうか?

4

1 に答える 1

3

これはCatmull-Romフィッティングです。コードは、点 X-1 と X+1 の位置に基づいて、点 X を通る適切な接線を見つけようとし、接線が (X-1)--(X) 線に平行になるようにします。 +1)、次に生成される制御点をいじって、「入ってくる」接線と「出ていく」接線が美的に満足のいく曲線を生成するようにします。

ここに画像の説明を入力

  1. ポイントがある
  2. タンジェントが (p-1)--(p+1) に等しいと仮定します
  3. それは一般的に恐ろしいように見えます
  4. コントロールポイントを少しスケールしてフィットさせます

ステップ 4 の実行方法は、技術的にはもはや Catmull-Rom ではありません。これは、接線が設定されると本物の Catmull-Rom スプラインが停止するためです。ステップ 4 が必要な場合の通常のアプローチは、投影された距離に基づいてポイントをスケーリングすることです。ポイント X を線 (X-1)--(X+1) に投影すると、正確に位置することはめったにありません。ただし、ポイント X-1 から v% の距離にあり、ポイント X+1 から (100-v)% の距離にあるため、見つかった接線をそれに応じてスケーリングします。

于 2015-02-05T22:07:49.030 に答える