Forked from: seyself's code on 2008-12-19 diff:11 forked from: code on 2008-12-19 seyself forked:2favorite:0lines:125license : All rights reserved modified : 2008-12-19 23:59:41 Embed Tweet // forked from seyself's code on 2008-12-19 package { [SWF(width="465", height="465", backgroundColor="#242424", frameRate="30")] dynamic public class Fern extends MovieClip { public function Fern() { screen = this; container = this; //---------------------------------------------- ここから >> var canvas:BitmapData = new BitmapData(465, 465, true, 0xFF242424); addChildAt(this.bitmap = new Bitmap(canvas), 0); var a:Vector.<Number> = Vector.<Number>([0.05, 0.05, 0.46, 0.47, 0.43, 0.42]); var b:Vector.<Number> = Vector.<Number>([0, 0, -0.32, -0.15, 0.28, 0.26]); var c:Vector.<Number> = Vector.<Number>([0, 0, 0.39, 0.17, -0.25, -0.35]); var d:Vector.<Number> = Vector.<Number>([0.6, -0.5, 0.38, 0.42, 0.45, 0.31]); var e:Vector.<Number> = Vector.<Number>([0, 0, 0, 0, 0, 0]); var f:Vector.<Number> = Vector.<Number>([0, 1, 0.6, 1.1, 1, 0.7]); const N:uint = a.length; const M:uint = 25 * N; var i:int, j:int, k:int, r:int; var x:Number, y:Number, s:Number, t:Number; var ip:Vector.<int> = new Vector.<int>(N); var table:Vector.<int> = new Vector.<int>(M); var p:Vector.<Number> = new Vector.<Number>(N); s = 0; for (i = 0; i < N; i++) { p[i] = abs(a[i] * d[i] - b[i] * c[i]); s += p[i]; ip[i] = i; } for (i = 0; i < N-1; i++) { k = i; for (j = i + 1; j < N; j++ ) if (p[j] < p[k]) k = j; t = p[i]; p[i] = p[k]; p[k] = t; r = ip[i]; ip[i] = ip[k]; ip[k] = r; } r = M; for (i = 0; i < N; i++) { k = (r * p[i] / s + 0.5) >> 0; s -= p[i]; do { table[--r] = ip[i]; } while (--k > 0); } x = y = 0; for (i = 0; i < 25000; i++) { j = table[random(0xFFFFFFFF) / (0xFFFFFFFF / M + 1) >> 0]; t = a[j] * x + b[j] * y + e[j]; y = c[j] * x + d[j] * y + f[j]; x = t; if (i >= 10) { canvas.setPixel(200 + x * 200, 440 - y * 200, 0xFFFFFF); } } //---------------------------------------------- ここまで } // end of constructor public function set loop (value:Function) : void { if (value is Function) { _loop = function(e:Event):void { value.call(screen, null); } addEventListener("enterFrame", _loop); } else { removeEventListener("enterFrame", _loop); } }; public function set click (value:Function) : void { if (value is Function) { _click = function(e:Event):void { value.call(screen, null); } stage.addEventListener("click", _click); } else { removeEventListener("click", _click); } }; private var _loop:Function; private var _click:Function; } // end of class import flash.display.*; import flash.geom.*; import flash.filters.*; import flash.text.*; import flash.events.*; import flash.utils.*; import caurina.transitions.Tweener; import caurina.transitions.properties.*; { // initialize ColorShortcuts.init(); FilterShortcuts.init(); } } // end of package var screen:*; var container:*; const PI:Number = 3.141592653589793; const PI2:Number = 6.283185307179586; const PI_HALF:Number = 1.5707963267948966; const PI_QUOT:Number = 0.7853981633974483; const PI_RADIAN:Number = 0.017453292519943295; const PI_DEGREE:Number = 57.29577951308232; const E:Number = 2.71828182845905; function abs (v:Number):Number { if (v < 0) return -v; return v; } function cos (v:Number):Number { return Math.cos(v); } function sin (v:Number):Number { return Math.sin(v); } function tan (v:Number):Number { return Math.tan(v); } function log (v:Number):Number { return Math.log(v); } function sqrt (v:Number):Number { return Math.sqrt(v); } function pow (v:Number, n:Number):Number { return Math.pow(v, n); } function atan2 (y:Number, x:Number):Number { return Math.atan2(y, x); } function random (max:Number=1, min:Number=0):Number { return Math.random() * (max - min) + min; } function rgb (r:uint, g:uint, b:uint, a:Number = 0):uint { return a * 0xFF << 24 | r << 16 | g << 8 | b << 0; } function hsl (h:Number, s:Number, l:Number, a:Number = 0.0):uint { var r:Number = 0, g:Number = 0, b:Number = 0, cmin:Number, cmax:Number; if (s < 0) s = 0; if (s > 1) s = 1; if (l < 0) l = 0; if (l > 1) l = 1; h = h % 360; if (h < 0) h = h + 360; if (l <= 0.5) { cmin = l * ( 1 - s ); cmax = 2 * l - cmin; } else { cmax = l * ( 1 - s ) + s; cmin = 2 * l - cmax; }; r = _h2v(h + 120, cmin, cmax) * 0xFF; g = _h2v(h, cmin, cmax) * 0xFF; b = _h2v(h - 120, cmin, cmax) * 0xFF; a *= 0xFF; return a << 24 | r << 16 | g << 8 | b << 0; } function _h2v (h:Number, min:Number, max:Number):Number { h = h % 360; if (h < 0) h = h + 360; if (h < 60) return min + (max - min) * h / 60; if (h >= 60 && h < 180) return max; if (h >= 180 && h < 240) return min + (max - min) * (240 - h) / 60; return min; } Code Fullscreen Preview Fullscreen Math.min value Math.max table call removeEventListener addChildAt FilterShortcuts.init ColorShortcuts.init Math.abs Math.tan setPixel Math.log Math.atan2 Math.pow Math.sqrt addEventListener Math.cos Math.PI Math.random sort new page view favorite forked pv403 木 forked from: forked from: co.. h_sakurai forked:0 favorite:0lines:99 (diff:168) pv3968 Tree seyself forked:2 favorite:5lines:169 (diff:64)