[ActionScript]curveToで楕円を描く

自分用メモです。

ActionScriptで楕円を描画する際、通常は drawEllipse を使いますが、drawPath や drawGraphicsData を使いたい場合があります。
こうしたとき、curveTo で円や楕円を描画しなければなりません。

中心が(x0, y0), 半径が(w, h)の楕円を curveTo で描画するプログラムは以下のような感じ。
(正円なら、w == h)

// 分割数
var seg:uint = 8;

var angle:Number = Math.PI / seg;
var angle2:Number = angle * 2;
var halfPI:Number = Math.PI / 2;

graphics.moveTo(x0 + w, y0);
for (var i:uint = 1; i < = seg; i++)
{
var r:Number = i * angle2;

// アンカーポイントの座標
var ax:Number = w * Math.cos(r);
var ay:Number = h * Math.sin(r);

// コントロールポイントの座標
var cx:Number = ax + w * Math.tan(angle) * Math.cos(r - halfPI);
var cy:Number = ay + h * Math.tan(angle) * Math.sin(r - halfPI);

// 弧の描画
graphics.curveTo(cx + x0, cy + y0, ax + x0, ay + y0);
}

Leave a Reply