私はそれを自分で修正しました:
catmull romスプラインを使用する代わりに、2次曲線と計算された中点を使用しています。このソリューションは、滑らかな形状を描画する場合にのみ機能しますが、パスがポイントを直接通過する必要がある場合には機能しないことに注意してください。
仕組みは次のとおりです。
最初:ラインの始点を最初のポイントに設定し、直後にmoveToコマンドを設定します
M point1.x,point1.y M
これは、エッジなしでパスを閉じるために重要です。
ここで、すべてのポイントをループし、現在のポイントと次のポイントの間に計算された中点を追加し、その後に次のポイントをコントロールとして使用した2次曲線を追加します。
mid.x,mid.y C next.x,next.y
これを使用して、AとBの間の中点Mを計算します。
M.x = (A.x-B.x)/2 + B.x
M.y = (A.y-B.y)/2 + B.y
すべてのポイントをループした後、最初のポイントをコントロールとして、1番目と2番目のポイントの中点まで2次曲線を作成する必要があります。
C first.x,first.y mid.x, mid.y
次に、Zを使用してパスを閉じ、図形を塗りつぶすことができます。
Z
パスの先頭に2つのmoveToコマンドがあるため、この接続は表示されません。
私のソリューションの結果とソースコードを確認するには、更新されたjsfiddleにアクセスしてください:http:
//jsfiddle.net/ry8kT/1/