forked from: Sunflower Seed Spiral
forked from Sunflower Seed Spiral (diff: 35)
ActionScript3 source code
/**
* Copyright aobyrne ( http://wonderfl.net/user/aobyrne )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/kace
*/
// forked from Quasimondo's Sunflower Seed Spiral
package {
import flash.display.StageAlign;
import flash.text.TextField;
import flash.display.Graphics;
import flash.display.Sprite;
public class SunflowerSpiral extends Sprite {
private const third:Number=222.492;
private const second:Number=99.50078;
private const first:Number=137.50776;
private const phi:Number=0.5*(Math.sqrt(5)-1);
private const tau:Number=1/phi;
public function SunflowerSpiral() {
stage.align = StageAlign.TOP_LEFT;
renderSpiral( 300, 7, 4, 0);
renderSpiral( 120, 10, 5, 1,0xff0000,3,600);
renderSpiral( 120, 10, 5, 2,0x0000ff,3,200,600);
this.scaleX = this.scaleY = 0.55;
var tf:TextField = TextField(addChild(new TextField()));
tf.border = true;
tf.height = 200;
tf.visible = false;
tf.text = String(360-first);
tf.appendText( '\n'+String(phi));
tf.appendText( '\n'+String(360*phi));
tf.appendText( '\n'+String(360*phi*phi));
tf.appendText( '\n'+String('-'));
tf.appendText( '\n'+String(tau));
tf.appendText( '\n'+String(270-first));
tf.appendText( '\n'+String(second+first));
tf.appendText( '\n'+String(first-second));
tf.appendText( '\n'+String(second/first));
tf.appendText( '\n'+String(1/(second/first)));
tf.scaleX = tf.scaleY=1/this.scaleY;
}
private function renderSpiral( count:int, radius:int, padding:int, magicAngleIndex:uint = 0
,color:uint=0,lineThickness:Number=0
,_x:Number=200, _y:Number=200):void
{
var g:Graphics = graphics;
g.lineStyle(lineThickness,color);
var x:Number = _x;
var y:Number = _y;
var divergence:Number = [first,second,third][magicAngleIndex % 3] / 180 * Math.PI;
for ( var i:int = 1; i <= count; i++ )
{
var r:Number = (radius + padding) * Math.sqrt( i ) - radius * 0.3;
var a:Number = divergence * i;
g.drawCircle( x + Math.cos( a ) * r, y + Math.sin( a ) * r, radius);
}
}
}
}