2017-01-24 8 views
1

ベジエ曲線の開始点と終了点と2つの制御点を指定すると、(JavaScriptで)曲線を近似し、セグメント間の角度をあまり大きくしないでください)。私は主に自分自身を書く前に既に効率的なオープンソースアルゴリズムがあるかどうかを見たいと思っています。ここでJavaScriptのベジエ曲線を効率的に細分化する

は、私は近く、このやってんであることを発見したものです:

https://github.com/turf-junkyard/turf-bezierを - それは全く同じではないのですが、私はすでにスプラインを持っているので、私は、コードの一部を使用することができます。

https://github.com/seanchas116/bezier-subdivide - これはパフォーマンスにコストがかかる再帰的アルゴリズムのように見えますが、私が欲しいと思うようです。

https://pomax.github.io/bezierjs/ - getLUT()は便利ですが、いくつのステップを決定する方法が必要です。

http://ciechanowski.me/blog/2014/02/18/drawing-bezier-curves/ - 私が欲しいものはかなりですが、これはJavascriptではありません。

http://antigrain.com/research/adaptive_bezier/ - 有用な理論。

+2

私はPomax時のgetLUT()を使用します。使用するステップ数を計算するには、曲線の中間点から開始点と終了点の間の中間点までの距離を測定できます。あなたが見てみたいのですが、私はこれと似たようなことをしました[ここ](https://github.com/fracalo/svg-contour/blob/master/src/utils/redraw-steep-curve.js#L7) – maioman

+0

私同じことをするだろう。実際には、LUTが最もうまく機能する「平坦化」(カーブを多項式に変える)と同じように、ここで細分化を探しているわけではありません。通常は32ステップで十分ですが、ツイスト・カーブの値を上げるのは簡単です。 –

答えて

関連する問題