私はほとんど経験していない初めてRaphaëlを使用しています。私は本当にこの2つに精通している人が私を助けてくれる人が必要です。RaphaëlJSとSVGを使用してセクタパスのサイズを変更するよりエレガントな方法はありますか?
私は動的セクタを持つ円グラフを作成しました。セクターは、丸いボタンをドラッグしてサイズを変更することができます。 this fiddleを参照してください。唯一必要なブラウザであるChromeとSafariでテストしました。
円グラフはまだ完成していません。 セクタが重複する可能性があります。今はこれを無視してください。
セクタの開始角度が終了角度より大きい場合、私は問題に直面しました。これは、終了角度が0/360°マークを超えた場合です。これを解決するために、私はパスローテーション - パラメータを利用しました。背中の角度を移動させながら、終了角度が360になるまで、私はあなたがこの機能にはフィドルでこれを見ることができ、前方のセクターを移動:
function sector_update(cx, cy, r, startAngle, endAngle, sec) {
var x1 = cx + r * Math.cos(-startAngle * rad),
x2 = cx + r * Math.cos(-endAngle * rad),
y1 = cy + r * Math.sin(-startAngle * rad),
y2 = cy + r * Math.sin(-endAngle * rad);
var rotation = 0;
// This is the part that I have the feeling could be improved.
// Remove the entire if-clause and let "rotation" equal 0 to see what happens
if (startAngle > endAngle) {
rotation = endAngle;
startAngle = startAngle - endAngle;
endAngle = 360;
}
sec.attr('path', ["M", cx, cy, "L", x1, y1, "A", r, r, rotation,
+(endAngle - startAngle > 180), 0, x2, y2, "z"]);
}
それがうまく動作しますが、私は少し懐疑的です。パスを回転させることなくこれを解決できますか?助けや指導に感謝します。
価値があるのは、あなたの解決策が私にはうまく見えます。 – graphicdivine
この質問のフォーマットは[codereview.stackexchange.com](http://codereview.stackexchange.com/)に適しているようです。そこに投稿してみてください。 –
@EliranMalkaチップをありがとう。 –