確かに上の例の半径は白い線の長さなので、どんな長さでもいいですか?
セクターを等しい弧長のn個のサブセクターに均等に分割する場合は、中心の最大角度を決定する必要があります。上記の例では、90度またはpi/2ラジアンです。
最終的に、最大角度、サブセクターの弧の長さ、サブセクターの角度、および半径はすべて、次の方法で接続されます。
subsector_arc_length = radius * subsector_angle
subsector_angle = max_angle / n
または//subsector_arc_length= radius * max_angle / n(これらにはラジアンが必要であることに注意してください)
しかし、これをキャンバスに描画することが目的の場合は、次のようになります。
var canvas = '<canvas id="canvas" width="500" height="500" style="border: 1px solid black; width: 500px; height: 500px; background: lightblue;"></canvas>'
document.body.innerHTML += canvas;
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var max_angle = Math.PI/2; //rad - 90deg
var no_of_flows = 10;
var radius = 200; //pixels
ctx.lineWidth = 5;
ctx.strokeStyle = '#333';
ctx.translate(250,350);
ctx.beginPath();
ctx.rotate(-Math.PI/2);
ctx.rotate(-Math.PI/2 + max_angle/2);
for (var i=0; i<no_of_flows; i++) {
ctx.moveTo(0,0);
ctx.lineTo(0, radius);
ctx.stroke();
ctx.rotate(-1*max_angle/(no_of_flows-1));
};
あなたの主な問題は、おそらくキャンバスからより良い画像を生成できるでしょう。+メニューのイベント構造。