Return to Snippet

Revision: 12478
at March 16, 2009 13:02 by allnatural


Initial Code
//
//
// centerX-- X origin of the spiral.
// centerY-- Y origin of the spiral.
// radius--- Distance from origin to outer arm.
// sides---- Number of points or sides along the spiral's arm.
// coils---- Number of coils or full rotations. (Positive numbers spin clockwise, negative numbers spin counter-clockwise)
// rotation- Overall rotation of the spiral. ('0'=no rotation, '1'=360 degrees, '180/360'=180 degrees)
//
function spiral(centerX, centerY, radius, sides, coils, rotation){
	//
	with(this){// Draw within the clip calling the function.
		//
		// Start at the center.
		moveTo(centerX, centerY);
		//
		// How far to step away from center for each side.
		var awayStep = radius/sides;
		//
		// How far to rotate around center for each side.
		var aroundStep = coils/sides;// 0 to 1 based.
		//
		// Convert aroundStep to radians.
		var aroundRadians = aroundStep * 2 * Math.PI;
		//
		// Convert rotation to radians.
		rotation *= 2 * Math.PI;
		//
		// For every side, step around and away from center.
		for(var i=1; i<=sides; i++){
			//
			// How far away from center
			var away = i * awayStep;
			//
			// How far around the center.
			var around = i * aroundRadians + rotation;
			//
			// Convert 'around' and 'away' to X and Y.
			var x = centerX + Math.cos(around) * away;
			var y = centerY + Math.sin(around) * away;
			//
			// Now that you know it, do it.
			lineTo(x, y);
		}
	}
}
//
//
//
// spiral(centerX, centerY, radius, sides, coils, rotation).
//
// Big center spirals.
lineStyle(27, 0x0000FF);// Blue.
spiral(250, 210, 200, 200, 4, 0);
lineStyle(27, 0xFF0000);// Red.
spiral(250, 210, 127, 200, 2.5, .5);
//
// Small corner spirals.
lineStyle(4, 0xFF00FF);//            Magenta.
spiral(50, 50, 50, 200, 6, 0);//       Big.
spiral(125, 50, 25, 200, 2, .5);//     Small.
lineStyle(4, 0x00FFFF);//            Cyan.
spiral(450, 50, 50, 200, -6, .5);//    Big.
spiral(375, 50, 25, 200, -2, 0);//     Small.
lineStyle(4, 0xFFFF00);//            Yellow.
spiral(50, 350, 50, 200, -4, 0);//     Big.
spiral(125, 350, 25, 200, -3, .5);//   Small.
lineStyle(4, 0x00FF00);//            Green.
spiral(450, 350, 50, 200, 4, .5);//    Big.
spiral(375, 350, 25, 200, 3, 0);//     Small.
//
//

Initial URL
http://www.pixelwit.com/blog

Initial Description
Need to fix encapsulation on this.

Initial Title
Dynamically Draw A Spiral

Initial Tags

                                

Initial Language
ActionScript 3