Sierpiński Glitch Texture #2 shapevent forked:0favorite:7lines:86license : MIT License modified : 2009-08-21 10:23:08 Embed Tweet package { import flash.display.*; import flash.geom.*; import flash.events.*; import flash.filters.*; [SWF(frameRate=60, backgroundColor=0x000000, width=500, height=500)] public class Texture extends MovieClip { private var canvas:BitmapData; private var clone:BitmapData; private var canvasRect:Rectangle; private var w:int; private var w2:Number; private var w10:Number; private var convert:Number; private var size:int; private var pix:Vector.<uint>; private var gray:ColorMatrixFilter; private var m:Matrix; private var sin:Number; private var cos:Number; private var dx:Number; private var dy:Number; private var pnt:Point; private var blur:BlurFilter; public function Texture(){ // init canvas = new BitmapData(500,500,false, 0x000000); addChild(new Bitmap(canvas)); clone = new BitmapData(500,500,false, 0x000000); canvasRect = canvas.rect; w = canvas.width; w2 = 1/w; w10 = 1/(w * 80); convert = Math.PI/180; size = canvas.width * canvas.height; pix = new Vector.<uint>(size, true); gray = new ColorMatrixFilter([1, 0.55, 0.55, 0,0,0.55, 0.9, 0.55, 0,0,0.55, 0.55, 0.550,0, 0,0,0,1,0]); m = new Matrix(); m.scale(1,-1); m.translate(0,canvas.height); sin = 0, cos = 0; dx = 0, dy = 0; pnt = new Point(); blur = new BlurFilter(10,10,1); addEventListener(Event.ENTER_FRAME, onLoop); function onLoop(evt:Event):void { canvas.lock(); dx += (mouseX * 10 - 3000 - dx) / 8; dy += (mouseY * 4 - dy) / 8; for (var i:int = 0; i<size; i++){ var xp:int = i % w; var yp:int = int(i * w2); var xp2:int = xp <<1; var t:Number; t = ((yp|(xp + yp)) * (xp + dx) *w10) % 6.14687; //compute sine // technique from http://lab.polygonal.de/2007/07/18/fast-and-accurate-sinecosine-approximation/ // by Michael Baczynski if (t<0) { sin=1.27323954*t+.405284735*t*t; } else { sin=1.27323954*t-0.405284735*t*t; } // compute cosine t = (xp2|(yp+xp/dx) + dy) * convert % 6.28; t+=1.57079632; if (t>3.14159265) { t-=6.28318531; } if (t<0) { cos=1.27323954*t+0.405284735*t*t; } else { cos=1.27323954*t-0.405284735*t*t; } var c1:int = 31 * (sin - cos); if (c1 <0) c1 = 256 - c1; c1 = (c1 >>1 | c1) ; pix[i] = c1 <<17 | c1 <<8 | c1; } canvas.setVector(canvasRect, pix); clone.copyPixels(canvas, canvasRect, pnt); canvas.draw(clone, m, null, BlendMode.SUBTRACT); clone.copyPixels(canvas, canvasRect, pnt); clone.applyFilter(clone, canvasRect, pnt, blur); canvas.draw(clone, null, null, BlendMode.LIGHTEN); canvas.applyFilter(canvas, canvasRect, pnt, gray); canvas.unlock(); } // private methods } } } Code Fullscreen Preview Fullscreen titou ish_xxxx dizgid Mae_ITR KinkumaDesig.. nki2 tkinjo : texture BitmapData, Texture, setVector texture clone size ColorMatrixFilter copyPixels Math.cos BlendMode.SUBTRACT setVector BlendMode.LIGHTEN width height Math.sin draw translate unlock lock mouseY mouseX scale Matrix BlurFilter