Canvasで扇形を書く関数sectorを作ってみた
Canvasをはじめて使ってみた。
そして、Math.sin()とMath.cos()も初めて使った。
function sector(ctx, x, y, radius, startAngle, endAngle) { var start = startAngle * Math.PI / 180; var end = endAngle * Math.PI / 180; ctx.arc(x, y, radius, start, end, false); var x1 = x + (radius * Math.cos(start)); var y1 = y + (radius * Math.sin(start)); ctx.moveTo(x1, y1); ctx.lineTo(x, y); var x2 = x + (radius * Math.cos(end)); var y2 = y + (radius * Math.sin(end)); ctx.lineTo(x2, y2); }
引数は、
- コンテキストオブジェクト
- 円の中心のx座標
- 円の中心のy座標
- 円の半径
- 開始角度
- 終了角度
arc()とだいたい一緒。
ちゃんと動くかは怪しいけど、それっぽく動いた。
わりとがんばってつくったけど、canvasに扇形つくるメソッドみたいなのあるのかな?
追記
半円以上(開始角度と終了角度が180以上になると)fill()で塗りつぶすとうまく
いってないなぁ。