{"id":386,"date":"2009-08-21T17:49:34","date_gmt":"2009-08-22T00:49:34","guid":{"rendered":"https:\/\/actionsnippet.com\/?p=2038"},"modified":"2009-08-21T17:49:34","modified_gmt":"2009-08-22T00:49:34","slug":"sierpinski-glitch-texture-3","status":"publish","type":"post","link":"https:\/\/actionsnippet.com\/?p=386","title":{"rendered":"Sierpi\u0144ski Glitch Texture #3"},"content":{"rendered":"<pre class=\"brush: as3; title: ; notranslate\" title=\"\">\r\n&#x5B;SWF(frameRate=60, backgroundColor=0x000000, width=500, height=500)]\r\n \r\nvar canvas:BitmapData = new BitmapData(500,500,false, 0x000000);\r\naddChild(new Bitmap(canvas));\r\nvar clone:BitmapData = new BitmapData(500,500,false, 0x000000);\r\nvar canvasRect:Rectangle = canvas.rect;\r\nvar w:int = canvas.width;\r\nvar w2:Number = 1\/w;\r\nvar w10:Number = 1\/(w * 80);\r\nvar convert:Number = Math.PI\/180;\r\nvar size:int = canvas.width * canvas.height;\r\nvar pix:Vector.&lt;uint&gt; = new Vector.&lt;uint&gt;(size, true);\r\nvar m:Matrix = new Matrix();\r\nm.scale(1,-1);\r\nm.translate(0,canvas.height);\r\nvar sin:Number = 0, cos:Number = 0;\r\nvar dx:Number = 0, dy:Number = 0;\r\nvar pnt:Point = new Point();\r\nvar blur:BlurFilter = new BlurFilter(10,10,1);\r\naddEventListener(Event.ENTER_FRAME, onLoop);\r\nfunction onLoop(evt:Event):void {\r\n\tcanvas.lock();\r\n\tdx +=  (mouseX * 10 - 3000 - dx) \/ 8;\r\n\tdy +=  (mouseY * 4 - dy) \/ 8;\r\n\tfor (var i:int = 0; i&lt;size; i++){\r\n\t\tvar xp:int = i % w;\r\n\t\tvar yp:int = int(i * w2);\r\n\t\tvar xp2:int = xp &lt;&lt;1;\r\n\t\tvar t:Number;\r\n\t\tt = ((yp|(xp + yp * 0.1)) * (xp + dx) *w10) % 6.14687;\r\n\t\t\/\/compute sine\r\n\t\t\/\/ technique from http:\/\/lab.polygonal.de\/2007\/07\/18\/fast-and-accurate-sinecosine-approximation\/\r\n\t\t\/\/ by Michael Baczynski\r\n\t\tif (t&lt;0) {\r\n\t\t\tsin=1.27323954*t+.405284735*t*t;\r\n\t\t} else {\r\n\t\t\tsin=1.27323954*t-0.405284735*t*t;\r\n\t\t}\r\n\t\t\/\/ compute cosine\r\n\t\tt = (xp2|(yp+xp*0.1) + dy) * convert % 6.28;\r\n\t\tt+=1.57079632;\r\n\t\tif (t&gt;3.14159265) {\r\n\t\t\tt-=6.28318531;\r\n\t\t}\r\n\t\tif (t&lt;0) {\r\n\t\t\tcos=1.27323954*t+0.405284735*t*t;\r\n\t\t} else {\r\n\t\t\tcos=1.27323954*t-0.405284735*t*t;\r\n\t\t}\r\n\t\tvar c1:int = 31 * (sin - cos);\r\n\t\tif (c1 &lt;0) c1 = 256 - c1;\r\n\t\tc1 = (c1 &lt;&lt;4 | c1) ;\r\n\t\tpix&#x5B;i] = c1 &lt;&lt;16 | c1 &lt;&lt;8 | c1;\r\n\t}\r\n\tcanvas.setVector(canvasRect, pix);\r\n\tclone.copyPixels(canvas, canvasRect, pnt);\r\n\tcanvas.draw(clone, m, null, BlendMode.SUBTRACT);\r\n\tclone.copyPixels(canvas, canvasRect, pnt);\r\n\tclone.applyFilter(clone, canvasRect, pnt, blur);\r\n\tcanvas.draw(clone, null, null, BlendMode.SCREEN);\r\n\tcanvas.unlock();\r\n}\r\n<\/pre>\n<p>Decided to do a grayscale version &#8230; also rendered it out large and posted it on flickr&#8230;<br \/>\n<a data-asruffle-linked=\"true\" href=\"http:\/\/www.actionsnippet.com\/swfs\/sptex.html\" target=\"blank\"><br \/>\nCheck out the swf&#8230;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/actionsnippet.com\/wp-content\/sptexbw.jpg\" \/><\/a> <span class=\"asruffle-link\" data-swf=\"{&quot;url&quot;:&quot;https:\\\/\\\/actionsnippet.com\\\/swfs\\\/sptex.swf&quot;,&quot;title&quot;:&quot;sptex&quot;,&quot;width&quot;:500,&quot;height&quot;:500,&quot;missing&quot;:false,&quot;allowScriptAccess&quot;:false,&quot;backgroundColor&quot;:&quot;#000000&quot;}\"><button type=\"button\" hidden aria-expanded=\"false\">Play demo<span class=\"screen-reader-text\">: sptex<\/span><\/button><\/span><\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/shapevent\/3843397981\/sizes\/l\/\" target=\"blank\"><br \/>\nCheck out the large flickr version&#8230;<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2602\/3843397981_0a87aedd5e.jpg\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#x5B;SWF(frameRate=60, backgroundColor=0x000000, width=500, height=500)] var canvas:BitmapData = new BitmapData(500,500,false, 0x000000); addChild(new Bitmap(canvas)); var clone:BitmapData = new BitmapData(500,500,false, 0x000000); var canvasRect:Rectangle = canvas.rect; var w:int = canvas.width; var w2:Number = 1\/w; var w10:Number = 1\/(w * 80); var convert:Number = Math.PI\/180; var size:int = canvas.width * canvas.height; var pix:Vector.&lt;uint&gt; = new Vector.&lt;uint&gt;(size, true); var m:Matrix = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,36,25,79],"tags":[3,14,4],"class_list":["post-386","post","type-post","status-publish","format-standard","hentry","category-bitmapdata","category-operators","category-pixel-manipulation","category-vector","tag-actionscript","tag-as3","tag-flash"],"_links":{"self":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=386"}],"version-history":[{"count":0,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/386\/revisions"}],"wp:attachment":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}