I use this function to draw circle segments (I think I ported it from the AS2 online example on how to draw full circles long ago):
public static function drawCircleSegment(graphics:Graphics, center:Point, start:Number, end:Number, r:Number, h_ratio:Number=1, v_ratio:Number=1, new_drawing:Boolean=true):void
{
var x:Number = center.x;
var y:Number = center.y;
if(new_drawing)
{
graphics.moveTo(x+Math.cos(start)*r*h_ratio, y+Math.sin(start)*r*v_ratio);
}
var segments:uint = 8;
var theta:Number = (end-start)/segments;
var angle:Number = start;
var ctrlRadius:Number = r/Math.cos(theta/2);
for (var i:int = 0; i<segments; i++) {
angle += theta;
var angleMid:Number = angle-(theta/2);
var cx:Number = x+Math.cos(angleMid)*(ctrlRadius*h_ratio);
var cy:Number = y+Math.sin(angleMid)*(ctrlRadius*v_ratio);
var px:Number = x+Math.cos(angle)*r*h_ratio;
var py:Number = y+Math.sin(angle)*r*v_ratio;
graphics.curveTo(cx, cy, px, py);
}
}
I think he is close enough to perfect circles. I really don't understand the math inside, but I hope the options are clear enough for you.