Drawing an Arc

Hi everyone,

I’m trying to draw an arc (like a rainbow, with an outer radius and inner radius) in flash dynamically … here’s an example: http://www.infosoftglobal.com/FusionCharts/IS/Site_Doc/HelpDocs/Images/CO_Arc_1.gif . However, I’m having trouble drawing the inner radius. Also, I’m trying to do this without using a mask. If anyone can help out, it would be great:


	public static function drawArc(mc:MovieClip, x_pos:Number, y_pos:Number, radius:Number, innerRadius:Number, startAngle:Number, endAngle:Number, styles:DrawingStyle):Void {
		styles.applyStyles(mc);
		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;
		
		var inner_r:Number = innerRadius;
		var inner_cr:Number = innerRadius / Math.cos(theta / 2);
		
		mc.moveTo(x_pos + inner_r * Math.cos(angle), y_pos + inner_r * Math.sin(angle));
		mc.lineTo(x_pos + r * Math.cos(angle), y_pos + r * Math.sin(angle));
		
		for (var i:Number = 0; i < n; i++) {
			angle += theta;
			cangle += theta;
			var endX = r * Math.cos(angle);
			var endY = r * Math.sin(angle);
			var cX = cr * Math.cos(cangle);
			var cY = cr * Math.sin(cangle);
			mc.curveTo(x_pos + cX, y_pos + cY, x_pos + endX, y_pos + endY);
		}
		
		mc.lineTo(x_pos + inner_r * Math.cos(angle), y_pos + inner_r * Math.sin(angle));
		
		angle = endAngle * degToRad;
		cangle = angle - theta / 2;
			    
		for (var i:Number = 0; i < n; i++) {
			angle += theta;
			cangle += theta;
			var endX = inner_r * Math.cos(angle);
			var endY = inner_r * Math.sin(angle);
			var cX = inner_cr * Math.cos(cangle);
			var cY = inner_cr * Math.sin(cangle);
			mc.curveTo(x_pos + cX, y_pos + cY, x_pos + endX, y_pos + endY);
		}
		
		mc.endFill();
	}

thank you,