classes

SpecialDrawing.as

Stiahnuť SpecialDrawing.as

package sk.yoz.graphics
{
    import flash.display.Graphics;
    
    public class SpecialDrawing extends Object
    {
        public function SpecialDrawing()
        {
            super();
        }
        
        public static function wedge(
            graphics:Graphics, centerX:Number, centerY:Number, 
            radius:Number, startAngle:Number, endAngle:Number):void
        {
            var degToRad:Number = Math.PI / 180;
            if (endAngle < startAngle) 
                endAngle += 360;
            
            var r:Number = radius;
            var n:Number = Math.ceil((endAngle - startAngle) / 45);
            var theta:Number = ((endAngle - startAngle) / n) * degToRad;
            var cr:Number = radius / Math.cos(theta / 2);
            var angle:Number = startAngle * degToRad;
            var cangle:Number = angle - theta / 2;
            
            graphics.moveTo(centerX, centerY);
            graphics.lineTo(centerX + r * Math.cos(angle), 
                centerY + r * Math.sin(angle));
            for (var i:uint = 0; i < n; i++) 
            {
                angle += theta;
                cangle += theta;
                var endX:Number = r * Math.cos(angle);
                var endY:Number = r * Math.sin(angle);
                var cX:Number = cr * Math.cos(cangle);
                var cY:Number = cr * Math.sin(cangle);
                graphics.curveTo(centerX + cX, centerY + cY, centerX + endX, 
                    centerY + endY);
            }
            
            graphics.lineTo(centerX, centerY);
        }
    }
}