<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>subblue</title>
    <link>http://www.subblue.com/</link>
    <pubDate>Mon, 13 Jul 2009 23:00:00 GMT</pubDate>
    <description>Experiments in mathematical and generative art with a dash of web development.</description>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/subblue" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Fractal Explorer Pixel Bender Plugin</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/CnLMK7hEajk/fractal_explorer</link>
      <description>&lt;h2&gt;A new Pixel Bender plugin for generating a wide variety of fractals in real-time. A key feature enables images to be mapped into fractal space creating some amazing results.&lt;/h2&gt;
&lt;p&gt;Head over to the &lt;a href="http://www.subblue.com/projects/fractal_explorer" title="Fractal Explorer"&gt;Fractal Explorer project page&lt;/a&gt; to download the plugin and find out more.&lt;/p&gt;
&lt;p class="small"&gt;&lt;a href="http://www.subblue.com/assets/0000/3163/tri-mask_large.jpg" class="popup"&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/3163/tri-mask_full.jpg" alt="Original image: http://www.flickr.com/photos/audringje/535107837/" title="Original image: http://www.flickr.com/photos/audringje/535107837/" width="585" height="448" /&gt;&lt;/a&gt;&lt;br /&gt;The above image is licensed under the Creative Commons Share Alike-Attribution-Non-Commercial license as per the original thanks to &lt;a href="http://www.flickr.com/photos/audringje/535107837/"&gt;Audringje&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=CnLMK7hEajk:r6HI8w_mYA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=CnLMK7hEajk:r6HI8w_mYA0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=CnLMK7hEajk:r6HI8w_mYA0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=CnLMK7hEajk:r6HI8w_mYA0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=CnLMK7hEajk:r6HI8w_mYA0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/CnLMK7hEajk" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 13 Jul 2009 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2009/7/14/fractal_explorer</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2009/7/14/fractal_explorer</feedburner:origLink></item>
    <item>
      <title>Fractals and generative art resources</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/k8gAwuWTT-8/fractals_and_generative_art_resources</link>
      <description>&lt;h2&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/3036/Glynn1_full.jpg" alt="Glynn Tree" title="Glynn Tree" width="585" height="422" /&gt;&lt;br /&gt;&lt;br /&gt;As a follow up to my talk on Fractals and Generative Art at the Apple Store in Glasgow here is a list of links for further reading and exploration.&lt;br /&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3&gt;The mathematics of fractals&lt;/h3&gt;
&lt;p&gt;Good places to start learning about the mathematics of fractals are &lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;Wikipedia&lt;/a&gt; and &lt;a href="http://mathworld.wolfram.com/Fractal.html"&gt;Mathworld&lt;/a&gt;. There are many books on the subject but three books I can recommend are &lt;a href="http://www.amazon.co.uk/Chaos-Fractals-New-Frontiers-Science/dp/0387202293"&gt;Chaos and Fractals - New Frontiers of Science&lt;/a&gt;, &lt;a href="http://www.amazon.com/Computational-Beauty-Nature-Explorations-Adaptation/dp/0262561271"&gt;The Computational Beauty of Nature&lt;/a&gt; and the definitive work by Mandelbrot, &lt;a href="http://www.amazon.co.uk/Fractal-Geometry-Nature-Benoit-Mandelbrot/dp/0716711869"&gt;The Fractal Geometry of Nature&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Fractal generation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;img class="right" src="http://www.subblue.com/assets/0000/3045/Glynn2_preview.jpg" alt="Tolkien Tree" title="Tolkien Tree" width="139" height="100" /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="http://www.ultrafractal.com/"&gt;Ultrafractal&lt;/a&gt;&lt;/strong&gt; is the Photoshop of the fractal world. It's Windows only but works very nicely via Parallels on the Mac. Other programs worth investigating is the open-source &lt;a href="http://wmi.math.u-szeged.hu/xaos/doku.php"&gt;GNU Xaos&lt;/a&gt; and the Mac only &lt;a href="http://www.gandreas.com/products_graphics.html"&gt;Quadrium&lt;/a&gt; apps.&lt;br /&gt;Writing your own fractal rendering scripts is highly recommended as a good way to explore the subject.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fractal explorer&lt;/strong&gt; is the &lt;a href="http://labs.adobe.com/technologies/pixelbender/"&gt;Pixel Bender&lt;/a&gt; plugin for Photoshop and After Effects CS4 that I demonstrated in the talk. I'm making some final tweaks and will be releasing it soon!&lt;/p&gt;
&lt;h3&gt;Fractal Flames&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img class="right" src="http://www.subblue.com/assets/0000/3090/Apophysis-090501-17_preview.jpg" alt="Aperture" title="Aperture" width="139" height="139" /&gt;Fractals flames are a form of Iterative Functional Systems (IFS). To find out more see &lt;a href="http://flam3.com"&gt;flam3.com&lt;/a&gt;. &lt;strong&gt;&lt;a href="http://www.apophysis.org/"&gt;Apophysis&lt;/a&gt;&lt;/strong&gt; is the daddy of this area. Mac users have to use the Java port, &lt;a href="http://jfbouzereau.free.fr/apophysis.html"&gt;Apophysis-j&lt;/a&gt;. The open-source programme can take a bit of effort to get interesting results but these &lt;a href="http://apophysis.wikispaces.com/Tutorials"&gt;tutorials&lt;/a&gt; will help you on your way. The &lt;a href="http://apophysis.deviantart.com/"&gt;Apophysis group&lt;/a&gt; on deviantART is a great place to see what is possible.&lt;/p&gt;
&lt;p&gt;I also recommend the excellent &lt;a href="http://electricsheep.org/"&gt;Electric Sheep&lt;/a&gt; animated fractal flame screen saver - keeps you tripping for hours.&lt;/p&gt;
&lt;h3&gt;Context Free&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.contextfreeart.org"&gt;Context Free&lt;/a&gt;&lt;/strong&gt; is an open-source programme for visualising Context Free Design Grammars (CFDG) and is an excellent tool for exploring generative graphics. The images are rendered from a set of simple recursive rules that can often create surprising beautiful results. Try out some of the code examples in the &lt;a href="http://www.contextfreeart.org/gallery/"&gt;gallery&lt;/a&gt; for a quick start.&lt;/p&gt;
&lt;h3&gt;Structure Synth&lt;/h3&gt;
&lt;p&gt;&lt;img class="right" src="http://www.subblue.com/assets/0000/2486/framework-top_preview.jpg" alt="Box pyramid 1" title="Box pyramid 1" width="139" height="104" /&gt;Taking CFDG into the third dimension, &lt;strong&gt;&lt;a href="http://structuresynth.sourceforge.net/"&gt;Structure Synth&lt;/a&gt;&lt;/strong&gt; is a fantastic open-source tool for creating abstract 3D models. There are some good example scenes included to get you started and an active &lt;a href="http://www.flickr.com/groups/structuresynth/"&gt;Flickr group&lt;/a&gt; to feed your inspiration.&lt;/p&gt;
&lt;h3&gt;Sunflow&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sunflow.sourceforge.net/"&gt;Sunflow&lt;/a&gt;&lt;/strong&gt; is an open-source global illumination rendering system written in Java. There hasn't been a new release of the programme in a couple of years, but it is already a very capable system. Structure Synth can export Sunflow scenes and it has plugins to integrate with the open-source 3D package &lt;a href="http://www.blender.org/"&gt;Blender&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;TopMod&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.topmod3d.org/"&gt;TopMod&lt;/a&gt;&lt;/strong&gt; is a specialist open-source 3D topology modelling tool with support for Python scripting. It's not really a tool for pure generative graphics but damn cool all the same!&lt;/p&gt;
&lt;h3&gt;Terragen&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.planetside.co.uk"&gt;Terragen&lt;/a&gt;&lt;/strong&gt; is an amazing photo-realistic landscape and environment renderer. Its fractal based terrain generator enables you to create entire worlds procedurally. There is a resolution limited free version you can use for non-commercial projects to get started with.&lt;/p&gt;
&lt;h3&gt;Flash, Flex, Actionscript 3.0, Pixel Bender and friends&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img class="right" src="http://www.subblue.com/assets/0000/3027/iMac-lowres_preview.jpg" alt="iMac Droste" title="iMac Droste" width="139" height="93" /&gt;Adobe Flash is one of the best ways to share your visualisations and the power of Actionscript 3.0, especially combined with &lt;a href="http://labs.adobe.com/technologies/pixelbender/"&gt;Pixel Bender&lt;/a&gt; and &lt;a href="http://labs.adobe.com/technologies/alchemy/"&gt;Alchemy&lt;/a&gt;, has enabled some pretty impressive stuff. You also don't need the full Adobe Flash IDE to create Flash apps. See the &lt;a href="http://opensource.adobe.com"&gt;Adobe open-source site&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&amp;amp;exc=26"&gt;Pixel Bender exchange&lt;/a&gt; is a good source for example scripts. Also keep your eye on the &lt;a href="http://labs.adobe.com/"&gt;Adobe Labs&lt;/a&gt; site as there is always cool stuff going on. See the &lt;a href="http://www.subblue.com/projects/droste" title="Escher's Droste Effect"&gt;Droste effect plugin&lt;/a&gt; project page to get started.&lt;/p&gt;
&lt;h3&gt;Processing&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.processing.org/"&gt;Processing&lt;/a&gt;&lt;/strong&gt; is an open-source Java based programming language and environment for generating images, animations and visualisations. It is one of the biggest players in the generative graphics scene with a huge&amp;nbsp; community, many online resources and a number of books on the subject.&lt;/p&gt;
&lt;h3&gt;Nodebox&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.nodebox.net"&gt;Nodebox&lt;/a&gt;&lt;/strong&gt; is a Mac only graphics programming environment very similar to Processing but based on Python. Although it might have a much smaller community than Processing it still has a very complete selection of libraries and can generate extremely high quality images and animations.&lt;/p&gt;
&lt;h3&gt;Open frameworks&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.openframeworks.cc/"&gt;Open Frameworks&lt;/a&gt;&lt;/strong&gt; is another visual programming environment, this time based on C++. See the &lt;a href="http://www.openframeworks.cc/forum/"&gt;forum&lt;/a&gt; and &lt;a href="http://wiki.openframeworks.cc"&gt;wiki&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3&gt;Blogs and places of inspiration&lt;/h3&gt;
&lt;p&gt;There are a huge number of blogs and sites focusing on generative graphics by many extremely talented people. A few to get you started:&lt;br /&gt; &lt;a href="http://www.generatorx.no/"&gt;Generator.x&lt;/a&gt;&lt;br /&gt; &lt;a href="http://dataisnature.com/"&gt;Data is Nature&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.flight404.com/blog/"&gt;Flight 404&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.shiffman.net/"&gt;Daniel Shiffman&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.davebollinger.com/works/"&gt;Dave Bollinger&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.bit-101.com/blog/"&gt;BIT-101&lt;/a&gt;&lt;br /&gt; &lt;a href="http://blog.drwoohoo.com/"&gt;Dr. Woohoo!&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.quasimondo.com/"&gt;Quasimondo&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.memo.tv/"&gt;Memo.tv&lt;/a&gt;&lt;br /&gt; &lt;a href="http://blog.soulwire.co.uk/"&gt;Soulwire&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.wblut.com/"&gt;W:Blut&lt;/a&gt;&lt;br /&gt; &lt;a href="http://infosthetics.com/"&gt;Information Aestetics&lt;/a&gt;&lt;br /&gt; &lt;a href="http://www.visualcomplexity.com/vc/"&gt;Visual Complexity&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Credits&lt;/h3&gt;
&lt;p&gt;Specific thanks to &lt;a href="http://www.flickr.com/photos/crickography/sets/72157600393348064/?page=3"&gt;Chris Creek&lt;/a&gt; and &lt;a href="http://www.flickr.com/photos/sfauth/sets/72157594433040508/"&gt;Sven Fauth&lt;/a&gt; for letting me use a couple of their Apophysis images in the presentation and &lt;a href="http://www.michael-hogg.co.uk/"&gt;Michael Hogg&lt;/a&gt; for sharing his Mandelbrot deep zoom animation.&lt;/p&gt;
&lt;p&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/3153/flowers_full.jpg" alt="Flowers to the power 4" title="Flowers to the power 4" width="585" height="585" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;A preview of my new Pixel Bender fractal explorer plugin - see the new &lt;a href="http://www.subblue.com/projects/fractal_explorer" title="Fractal Explorer"&gt;project page&lt;/a&gt;.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=k8gAwuWTT-8:8Vy-sV9CK0c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=k8gAwuWTT-8:8Vy-sV9CK0c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=k8gAwuWTT-8:8Vy-sV9CK0c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=k8gAwuWTT-8:8Vy-sV9CK0c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=k8gAwuWTT-8:8Vy-sV9CK0c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/k8gAwuWTT-8" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 13 May 2009 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2009/5/14/fractals_and_generative_art_resources</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2009/5/14/fractals_and_generative_art_resources</feedburner:origLink></item>
    <item>
      <title>Fractals and generative art talk</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/uDg7S0WC2Os/fractals_and_generative_art_talk</link>
      <description>&lt;p&gt;&lt;img class="center" src="http://www.subblue.com/assets/0000/3027/iMac-lowres_full.jpg" alt="iMac Droste" title="iMac Droste" width="585" height="390" /&gt;&lt;/p&gt;
&lt;h2&gt;6pm on Thursday 14th May at the Apple Store in Glasgow.&lt;/h2&gt;
&lt;p&gt;I'm going to be talking about creating fractals and generative art on the Mac. I'll be focussing on demonstrating some of the many open-source apps and scripts freely available. There will be lots of pretty pictures and animations and no mathematical or programming experience will be required.&lt;/p&gt;
&lt;p&gt;Hopefully it will sow a few seeds for the curious to go away and explore the world of fractal and generative art themselves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="http://www.subblue.com/blog/2009/5/12/fractals_and_generative_art_resources"&gt;A write-up is now online.&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=uDg7S0WC2Os:srCPaoveOcM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=uDg7S0WC2Os:srCPaoveOcM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=uDg7S0WC2Os:srCPaoveOcM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=uDg7S0WC2Os:srCPaoveOcM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=uDg7S0WC2Os:srCPaoveOcM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/uDg7S0WC2Os" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 09 May 2009 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2009/5/10/fractals_and_generative_art_talk</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2009/5/10/fractals_and_generative_art_talk</feedburner:origLink></item>
    <item>
      <title>Tracing a terrain</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/exN4nWG7lts/tracing_a_terrain</link>
      <description>&lt;h2&gt;This is a basic terrain rendering filter for Pixel Bender based on the Quasi-Analytic Error-Bound (QAEB, or "kweeb") ray tracing algorithm.&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;QAEB tracing is a raymarching algorithm for rendering realistic looking terrains using procedural fractal functions first introduced by &lt;a href="http://www.wizardnet.com/musgrave/qaeb.html"&gt;Ken Musgrave&lt;/a&gt;. After reading the chapter about it in the excellent book, "Texturing &amp;amp; Modeling: A Procedural Approach", I thought it might make an interesting challenge for an interactive Pixel Bender filter.&lt;/p&gt;
&lt;p&gt;The process is fairly unsubtle; a ray vector for each pixel is fired into the scene and its offset, &lt;em&gt;y&lt;/em&gt;, above a 2D height field, &lt;em&gt;f(x, z)&lt;/em&gt;, is calculated. The ray is repeatedly stepped, or marched, forward until it intersects the terrain. At this point the colour for the pixel is determined based on its calculated height and angle between the surface normal-vector and sun position. A secondary ray can be fired off from the intersection point towards the sun and if it intersects the terrain again we know that the original surface point must be in shadow.&lt;/p&gt;
&lt;p&gt;A couple of optimisations can be used to speed up the rendering. Firstly the step interval can be increased proportionally with distance as the geometric details get smaller in screen space the deeper into the scene. The second optimisation requires the scene to be rendered from the bottom up (near to far). It uses the calculated scene depth of the pixel below the one we want to calculate as the starting point for its ray as we know that as we move up the image we go deeper into the scene. However, Pixel Bender calculates many pixels in parallel on the GPU and so you can't use the result of one pixel calculation as the starting point for another, which unfortunately means we can't take advantage of this second optimisation.&lt;/p&gt;
&lt;p&gt;This filter uses a composition of sinusoidal functions at different frequencies to generate the height map. It's by no means perfect but at a low altitude gives a reasonable cartoon-like landscape where the repeating structure isn't obvious. I created a different version that used Perlin noise for the height field, which generated a much more realistic terrain but would cripple Pixel Bender causing a few hard reboots! I'm porting this version to Processing and will post about that soon.&lt;/p&gt;
&lt;p&gt;Other features such as the water level are set by clipping the height field at a lower limit and building like structures can be generated using a combination of &lt;a href="http://pixelero.wordpress.com/2008/07/28/various-functions-with-modulo/"&gt;modulo functions&lt;/a&gt;. There is also an option to overlay contour lines on the terrain.&lt;/p&gt;
&lt;p&gt;For more technical details on terrain rendering and other excellent computer graphics goodies see &lt;a href="http://iquilezles.org/www/"&gt;Inigo Quilez's site&lt;/a&gt;.&lt;/p&gt;
&lt;p class="info"&gt;&lt;a href="http://www.subblue.com/assets/0000/3017/landscape.zip" title="Landscape" class="file zip"&gt;Download the Landscape PixelBender filter&lt;/a&gt;&lt;br /&gt;&lt;em&gt;See the &lt;a href="http://labs.adobe.com/technologies/pixelbender/"&gt;Adobe PixelBender page&lt;/a&gt; for instructions on using the filters with Photoshop CS4 and After Effects&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="center" src="http://www.subblue.com/assets/0000/2972/landscape_full.png" alt="Landscape" title="Landscape" width="585" height="236" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=exN4nWG7lts:UIYRv2q8dvI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=exN4nWG7lts:UIYRv2q8dvI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=exN4nWG7lts:UIYRv2q8dvI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=exN4nWG7lts:UIYRv2q8dvI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=exN4nWG7lts:UIYRv2q8dvI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/exN4nWG7lts" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 07 Mar 2009 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2009/3/7/tracing_a_terrain</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2009/3/7/tracing_a_terrain</feedburner:origLink></item>
    <item>
      <title>Escher's Droste Effect</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/Dg_YVdnRHhM/eschers_droste_effect</link>
      <description>&lt;h2&gt;The "Droste effect" derives from a Dutch chocolate maker that used an image of its box on the box recursively at smaller and smaller scales.&lt;/h2&gt;
&lt;p&gt;MC Escher's "&lt;a href="http://www.artchive.com/artchive/e/escher/escher_gallery.jpg.html"&gt;Prentententoonstelling&lt;/a&gt;" (print gallery) image took this idea one step further and mapped the image on itself in a spiral. However, he only got so far with pen and paper leaving an enigmatic white centre. It wasn't until the Dutch mathematician, Hendrik Lenstra, worked out the maths behind the image transformation that the complete effect could be visualised. Take a look at the &lt;a href="http://escherdroste.math.leidenuniv.nl/index.php?menu=intro"&gt;illustrated write-up&lt;/a&gt; that gives a good explanation about the process.&lt;/p&gt;
&lt;p&gt;Jos Leys took the process further and created a &lt;a href="http://www.josleys.com/article_show.php?id=82"&gt;generic logrithmic image transformation&lt;/a&gt; that can create endless zooming animations. This process was turned into a Mathmap script by &lt;a href="http://www.flickr.com/photos/joshsommers/"&gt;Josh Sommers&lt;/a&gt; and &lt;a href="http://www.flickr.com/photos/breic/"&gt;Briec&lt;/a&gt; and now has an active &lt;a href="http://www.flickr.com/groups/escherdroste/"&gt;Flickr group&lt;/a&gt; that use it.&lt;/p&gt;
&lt;p&gt;I've ported the Mathmap script over to Adobe's new Pixel Bender Toolkit. Pixel Bender was officially released as part of the CS4 suite but is also available as a &lt;a href="http://labs.adobe.com/technologies/pixelbender/"&gt;free download&lt;/a&gt;. The filters will run in After Effects, Photoshop CS4 and Flash 10 (in some cases) so there is huge creative potential here!&lt;/p&gt;
&lt;p class="info"&gt;&lt;a href="http://www.subblue.com/projects/droste" title="Escher's Droste Effect Project"&gt;See the project page for download and usage instructions&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.subblue.com/projects/droste" title="Escher's Droste Effect"&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/3027/iMac-lowres_full.jpg" alt="iMac spiral" title="iMac spiral" width="585" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=Dg_YVdnRHhM:lp6tggbiHcM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=Dg_YVdnRHhM:lp6tggbiHcM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=Dg_YVdnRHhM:lp6tggbiHcM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=Dg_YVdnRHhM:lp6tggbiHcM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=Dg_YVdnRHhM:lp6tggbiHcM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/Dg_YVdnRHhM" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 17 Nov 2008 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/11/17/eschers_droste_effect</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/11/17/eschers_droste_effect</feedburner:origLink></item>
    <item>
      <title>Fast Mandelbrot Renderer</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/u7DQq1KDHcA/fast_mandelbrot_renderer</link>
      <description>&lt;h2&gt;Here is another version of the classic Mandelbrot set, however this one runs fast enough in Pixel Bender for real-time zooming all the way down to the limit of the floating point number precision (at which point you get some glitchy goodness).&lt;/h2&gt;
&lt;p&gt;Adobe recently launched the Pixel Bender Toolkit, which is a high-performance graphics processing language for image processing. It will offload the image processing to the GPU enabling very high performance operations.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You will need to install the Pixel Bender Toolkit (available as a &lt;a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit"&gt;free download here&lt;/a&gt;) and then copy &amp;amp; paste in the code below.&lt;/p&gt;
&lt;p&gt;Some pixel bender scripts can be compiled into filters than can be used within Flash 10 applications. However, Flash doesn't yet support filters with loops like this one, so we won't have a super-charged Flash fractal explorer just yet.&lt;/p&gt;
&lt;pre&gt;/**&lt;br /&gt; * Mandelbrot.pbk&lt;br /&gt; * &lt;br /&gt; * Copyright (c) 2008 Tom Beddard&lt;br /&gt; * http://www.subblue.com&lt;br /&gt; * &lt;br /&gt; * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php&lt;br /&gt; * &lt;br /&gt; * &lt;br /&gt; * Tips:&lt;br /&gt; * - Use the centerPreset option to jump to interesting parts of the Mandelbrot set.&lt;br /&gt; * - Increase the maxIterations option to increase detail on high zooms.&lt;br /&gt; * &lt;br /&gt; * As loops aren't supported with Hydra code it curently isn't possible to export this&lt;br /&gt; * for use in Flash. &lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;&amp;lt;languageVersion: 1.0;&amp;gt;&lt;br /&gt;&lt;br /&gt;kernel Mandelbrot&lt;br /&gt;&amp;lt;   namespace : "com.subblue.filters";&lt;br /&gt;    vendor : "Tom Beddard";&lt;br /&gt;    version : 1;&lt;br /&gt;    description : "Mandelbrot set renderer";&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;#define BAILOUT 10.0&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;    output pixel4 dst;&lt;br /&gt;    &lt;br /&gt;    parameter int2 size&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:int2(100, 100);&lt;br /&gt;        maxValue:int2(1000, 1000);&lt;br /&gt;        defaultValue:int2(640, 480);&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter float2 center&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:float2(-2.0, -1.0);&lt;br /&gt;        maxValue:float2(2.0, 1.0);&lt;br /&gt;        defaultValue:float2(-0.5, 0.0);&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter float2 centerOffset&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:float2(-1.0, -1.0);&lt;br /&gt;        maxValue:float2(1.0, 1.0);&lt;br /&gt;        defaultValue:float2(0.0, 0.0);&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter int centerPreset&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:0;&lt;br /&gt;        maxValue:4;&lt;br /&gt;        defaultValue:0;&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter float zoomMajor&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:0.0;&lt;br /&gt;        maxValue:20.0;&lt;br /&gt;        defaultValue:0.0;&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter float zoomMinor&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:0.0;&lt;br /&gt;        maxValue:10.0;&lt;br /&gt;        defaultValue:0.0;&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    parameter int maxIterations&lt;br /&gt;    &amp;lt;&lt;br /&gt;        minValue:20;&lt;br /&gt;        maxValue:800;&lt;br /&gt;        defaultValue:200;&lt;br /&gt;    &amp;gt;;&lt;br /&gt;    &lt;br /&gt;    region generated()&lt;br /&gt;    {&lt;br /&gt;        return region(float4(0, 0, size.x, size.y));&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    void&lt;br /&gt;    evaluatePixel()&lt;br /&gt;    {&lt;br /&gt;        pixel4 p;&lt;br /&gt;        float aa, bb, zz, twoab;&lt;br /&gt;        float x0 = center.x;&lt;br /&gt;        float y0 = center.y;&lt;br /&gt;        &lt;br /&gt;        // Use a center preset to find some nice parts of the Mandelbrot set&lt;br /&gt;        if (centerPreset == 1) {&lt;br /&gt;            x0 = -0.742522478103764;&lt;br /&gt;            y0 = -0.143708014488453;&lt;br /&gt;        } else if (centerPreset == 2) {&lt;br /&gt;            x0 = 0.36295341867850555;&lt;br /&gt;            y0 = -0.6455617463848476;&lt;br /&gt;        } else if (centerPreset == 3) {&lt;br /&gt;            x0 = 0.3218759918211005;&lt;br /&gt;            y0 = 0.03518083572368085;&lt;br /&gt;        } else if (centerPreset == 4) {&lt;br /&gt;            x0 = -1.673497088962531;&lt;br /&gt;            y0 = -0.0003318667941149705;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        float zoom = exp(zoomMajor + zoomMinor);&lt;br /&gt;        float x1 = x0 - 2.0 / zoom;			// Left limit of x&lt;br /&gt;        float x2 = x0 + 2.0 / zoom;			// Right limit of x&lt;br /&gt;        &lt;br /&gt;        float spanX = x2 - x1;&lt;br /&gt;        float spanY = spanX * (float(size.y) / float(size.x));&lt;br /&gt;        float y1 = y0 - spanY / 2.0;&lt;br /&gt;        float y2 = y0 + spanY / 2.0;&lt;br /&gt;        &lt;br /&gt;        x1 += centerOffset.x * spanX;       // Shift centre for fine tuning of position&lt;br /&gt;        y1 += centerOffset.y * spanY;&lt;br /&gt;        &lt;br /&gt;        float2 z = float2(x1, y1) + outCoord() * float2(spanX / float(size.x), spanY / float(size.y));&lt;br /&gt;        float2 z0 = z;&lt;br /&gt;        int n = 0;&lt;br /&gt;        &lt;br /&gt;        dst = pixel4(0.0, 0.0, 0.0, 1.0);   // Set everything to black first&lt;br /&gt;        &lt;br /&gt;        /**&lt;br /&gt;		 *  Mandelbrot formula&lt;br /&gt;		 *	z' = z^2 + c&lt;br /&gt;		 *	 where: z = a + bi&lt;br /&gt;		 *		    z^2 = (a^2 - b^2) + (2ab)i&lt;br /&gt;		 *	 and: c = x + yi&lt;br /&gt;		 */&lt;br /&gt;        while (n &amp;lt; maxIterations) {&lt;br /&gt;            aa = z.x * z.x;&lt;br /&gt;            bb = z.y * z.y;&lt;br /&gt;            &lt;br /&gt;            if (aa + bb &amp;gt; BAILOUT) {&lt;br /&gt;                // Fill the pixel based on the time it takes to reach the bailout threshold&lt;br /&gt;                p = pixel4(1.0 - float(n) / float(maxIterations));&lt;br /&gt;                p.a = 1.0;&lt;br /&gt;                dst = p;&lt;br /&gt;                break;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            twoab = 2.0 * z.x * z.y;&lt;br /&gt;            z.x = aa - bb + z0.x;&lt;br /&gt;			z.y = twoab + z0.y;&lt;br /&gt;            n += 1;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=u7DQq1KDHcA:_pH2YhSfCMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=u7DQq1KDHcA:_pH2YhSfCMQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=u7DQq1KDHcA:_pH2YhSfCMQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=u7DQq1KDHcA:_pH2YhSfCMQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=u7DQq1KDHcA:_pH2YhSfCMQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/u7DQq1KDHcA" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 13 Nov 2008 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/11/13/fast_mandelbrot_renderer</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/11/13/fast_mandelbrot_renderer</feedburner:origLink></item>
    <item>
      <title>Butterfly curves</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/lXJ19voBwPY/butterfly_curves</link>
      <description>&lt;h2&gt;Taken from Clifford Pickover's book, Computers and the Imagination, is this experiment that creates butterfly like curves.&lt;/h2&gt;
&lt;p&gt;The formula is expressed in polar coordinates as:&lt;br /&gt;&lt;br /&gt;&lt;img class="center" src="http://www.subblue.com/assets/0000/2495/butterfly_curve.gif" alt="" width="242" height="46" /&gt;&lt;br /&gt;By changing the A, B, a, b and c parameters you can get some nice results. &lt;br /&gt;Click on the image below to give it a go.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.subblue.com/projects/butterfly" title="Explore the butterfly curves"&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/2511/butterfly_1225924540_full.jpg" alt="butterfly 1225924540" title="butterfly 1225924540" width="585" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=lXJ19voBwPY:_kflvx27cBA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=lXJ19voBwPY:_kflvx27cBA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=lXJ19voBwPY:_kflvx27cBA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=lXJ19voBwPY:_kflvx27cBA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=lXJ19voBwPY:_kflvx27cBA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/lXJ19voBwPY" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 05 Nov 2008 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/11/5/butterfly_curves</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/11/5/butterfly_curves</feedburner:origLink></item>
    <item>
      <title>Guilloché Patterns</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/-FbMthX3vh0/guilloche</link>
      <description>&lt;h2&gt;If you wanted to design your own bank notes or passport you might consider using a Guilloch&amp;eacute; pattern as one of your anti-counterfeiting measures.&lt;/h2&gt;
&lt;p&gt;I first heard about Guilloch&amp;eacute; patterns in a recent post over at the &lt;a href="http://ministryoftype.co.uk/words/article/guilloches/" title="A blog worth adding to your feeds"&gt;Ministry of Type&lt;/a&gt; blog run by Aegir Hallmundur. Guilloch&amp;eacute; machines (also known as geometric lathes) have been used since the 17th century by watchmakers and goldsmiths, such as Faberg&amp;egrave;, for for ornamentation.&lt;/p&gt;
&lt;p&gt;Using the set of &lt;a href="http://mathworld.wolfram.com/Hypotrochoid.html"&gt;Hypotrochoid equations&lt;/a&gt; Aegir describes I've built a little Flash app to experiment with the various parameters. Click the picture below to play.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.subblue.com/projects/guilloche" title="Click to explore the Guilloche"&gt;&lt;img class="center" src="http://www.subblue.com/assets/0000/2365/guilloche_1223715406_full.jpg" alt="guilloche 1223715406" title="guilloche 1223715406" width="585" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="info"&gt;Download the &lt;a href="http://www.subblue.com/assets/0000/2421/guilloches.zip" title="Guilloches" class="file zip"&gt;AS3 source code&lt;/a&gt; and play with the &lt;a href="http://www.subblue.com/projects/guilloche"&gt;Guilloch&amp;eacute; explorer&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=-FbMthX3vh0:lgYACiQ3kM8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=-FbMthX3vh0:lgYACiQ3kM8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=-FbMthX3vh0:lgYACiQ3kM8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=-FbMthX3vh0:lgYACiQ3kM8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=-FbMthX3vh0:lgYACiQ3kM8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/-FbMthX3vh0" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 09 Oct 2008 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/10/10/guilloche</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/10/10/guilloche</feedburner:origLink></item>
    <item>
      <title>Mandelbrot</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/XZT56B4DFYg/mandelbrot</link>
      <description>&lt;h2&gt;Benoit Mandelbrot was the first person to study the function z&amp;prime; = z&lt;sup&gt;2&lt;/sup&gt;+c with a computer and the result is the iconic fractal shape that now takes his name.&lt;/h2&gt;
&lt;p&gt;Writing a script to render the Mandelbrot fractal has almost become a rite of passage for many programmers. Here is my version written in Actionscript 3.0.&lt;/p&gt;
&lt;p class="small"&gt;&lt;a href="http://www.subblue.com/blog/2008/10/2/mandelbrot" class="video swf"&gt;&lt;img src="http://www.subblue.com/assets/0000/2115/1223204798_full.jpg" alt="" width="585" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="small"&gt;&lt;strong&gt;Click/scrollwheel&lt;/strong&gt; to zoom, &lt;strong&gt;shift + click&lt;/strong&gt; to zoom out.&lt;br /&gt;&lt;strong&gt;Command + drag&lt;/strong&gt; or &lt;strong&gt;arrow keys&lt;/strong&gt; to pan. &lt;strong&gt;m&lt;/strong&gt; key to change mapping modes.&lt;br /&gt;&lt;strong&gt;a&lt;/strong&gt; to set anti-aliasing. &lt;strong&gt;f&lt;/strong&gt; to go fullscreen. &lt;strong&gt;s&lt;/strong&gt; to save out as a JPEG.&lt;br /&gt;&lt;strong&gt;+&lt;/strong&gt; and &lt;strong&gt;-&lt;/strong&gt; change the detail level - use when at a black boundary on a deep zoom.&lt;/p&gt;
&lt;p&gt;The Mandelbrot formula &lt;strong&gt;z' = z&lt;sup&gt;2&lt;/sup&gt; + c&lt;/strong&gt; is calculated for each pixel where its coordinates seed the &lt;strong&gt;a&lt;/strong&gt; and &lt;strong&gt;b&lt;/strong&gt; components of the complex number &lt;strong&gt;c = a + b&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt;. The output of the equation is fed back in as the new value of &lt;strong&gt;z&lt;/strong&gt; and this is repeated until the magnitude of &lt;strong&gt;z'&lt;/strong&gt; reaches a predefined bailout value. The number of iterations required to reach the bailout value is used to map a colour to the pixel. This is known as the "escape time" algorithm.&lt;/p&gt;
&lt;h3&gt;Mapping modes&lt;/h3&gt;
&lt;p&gt;Things start to get interesting when you play around with the mapping modes that convert the escape time to a colour. The standard mapping takes the escape time of the pixel as the index in an array of colour values. However, this approach results in colour banding around the fractal.&lt;/p&gt;
&lt;p&gt;&lt;img class="right" src="http://www.subblue.com/assets/0000/2043/1223199585_preview.jpg" alt="" width="139" height="139" /&gt;The method used here is a continuous, smooth mapping known as the "&lt;a href="http://en.wikipedia.org/wiki/Mandelbrot_set#Continuous_.28smooth.29_coloring" title="The algorithm explained on Wikipedia"&gt;normalised iteration count&lt;/a&gt;" algorithm. I've also added a variation to this called shelf mapping, which reverses the gradient for each colour band around the fractal and gives an interesting layered result.&lt;/p&gt;
&lt;p&gt;There are a couple of additional variations of the shelf mapping which use different bailout conditions to produce either spiky or puffy results. Zoom in and it's like flying over an infinite forest of sea anemones!&lt;/p&gt;
&lt;p&gt;&lt;img class="left" src="http://www.subblue.com/assets/0000/2051/1222991102_preview.jpg" alt="" width="139" height="89" /&gt;The last mapping mode is binary decomposition, which although it sounds fancy is actually quite straight forward. If the angle between the real and imaginary parts of the final z is &amp;gt; 0 colour the pixel white otherwise colour it black.&lt;br /&gt;You should enable the anti-aliasing option for best results with this mapping mode.&lt;/p&gt;
&lt;h3&gt;Performance&lt;/h3&gt;
&lt;p&gt;The default zoom factor for each click is 2x magnification, but you can only zoom to a maximum of around 8e12. This is due to the limited precision of the Number data type in Actionscript 3.0. Once you reach the limit you might see glitches due to rounding errors. It would be interesting to implement an arbitrary precision floating point data type in Actionscript, but the performance would probably make impractical for anything fractal related.&lt;/p&gt;
&lt;p&gt;If you are using Flash 10 then you should notice quite a speed increase compared to Flash 9. There seem to have been quite a few performance tweaks made in this latest release.&lt;/p&gt;
&lt;h3&gt;Fractal Explorer&lt;/h3&gt;
&lt;p&gt;This demo is in effect a prototype for a full blown Flash fractal explorer I'm currently working on that will let you define colour palettes, different mapping modes and fractals types.&amp;nbsp;Stay tuned for more fractal explorations!&lt;/p&gt;
&lt;p class="info"&gt;&lt;a href="http://www.subblue.com/assets/0000/2203/mandelbrot.zip" title="mandelbrot" class="file zip"&gt;Download the AS3 source&lt;/a&gt; and play with the &lt;a href="http://www.subblue.com/projects/mandelbrot" title="Mandelbrot"&gt;Mandelbrot Explorer&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=XZT56B4DFYg:-YvoL-XzXIQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=XZT56B4DFYg:-YvoL-XzXIQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=XZT56B4DFYg:-YvoL-XzXIQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=XZT56B4DFYg:-YvoL-XzXIQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=XZT56B4DFYg:-YvoL-XzXIQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/XZT56B4DFYg" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 01 Oct 2008 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/10/2/mandelbrot</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/10/2/mandelbrot</feedburner:origLink></item>
    <item>
      <title>Welcome to the new site</title>
      <link>http://feedproxy.google.com/~r/subblue/~3/hKlChFLwCb4/welcome</link>
      <description>&lt;h2&gt;It's been a long time coming, but I have finally rebuilt the site! For the past two and a half years the site has been neglected with just a basic holding page - no longer!&lt;/h2&gt;
&lt;p&gt;The purpose of this new site is for me to explore my interest in generative and mathematical art. In the spirit of open-source and online collaboration I intend on sharing much of the source code for the experiments here.&lt;/p&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.subblue.com/blog/2008/9/25/gumowski-mira_patterns"&gt;Gumowski-Mira Patterns&lt;/a&gt;&lt;/strong&gt;. A Flash experiment that lets you play around with this strange attractor and generate a wide variety or organic marine looking images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.subblue.com/blog/2008/9/20/aliasing_patterns"&gt;Aliasing patterns&lt;/a&gt;&lt;/strong&gt;. Make your eyes go funny with this interactive experiment that generates pixel aliasing patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.subblue.com/blog/2008/5/26/simple-attractors"&gt;Simple attractors&lt;/a&gt;&lt;/strong&gt;. An Adobe Air application that lets you visually explore two mathematical attractor equations and save the resulting renderings as PNG images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.subblue.com/blog/2008/4/16/harmonograph"&gt;Harmonograph&lt;/a&gt;&lt;/strong&gt;. Create intricate patterns with the Harmonograph explorer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also have another big project in the pipeline that will be launching soon ;-) For now there is more to see in the &lt;a href="http://www.subblue.com/blog"&gt;blog archive&lt;/a&gt; and &lt;a href="http://www.subblue.com/gallery"&gt;gallery&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;About the site&lt;/h3&gt;
&lt;p&gt;This site is built on the 'Clever Monkey System', which is a &lt;a href="http://www.rubyonrails.org" title="Web development that doesn't hurt!" class="popup"&gt;Ruby on Rails&lt;/a&gt; based content management system we developed at &lt;a href="http://www.tictocfamily.com" title="My employer" class="popup"&gt;tictoc&lt;/a&gt;. The 'CMS' is now in its sixth revision and powers over one hundred and forty sites at tictoc.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/subblue?a=hKlChFLwCb4:fXV1Wc-lxR0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=hKlChFLwCb4:fXV1Wc-lxR0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=hKlChFLwCb4:fXV1Wc-lxR0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/subblue?a=hKlChFLwCb4:fXV1Wc-lxR0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/subblue?i=hKlChFLwCb4:fXV1Wc-lxR0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subblue/~4/hKlChFLwCb4" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 27 Sep 2008 23:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://www.subblue.com/blog/2008/9/28/welcome</guid>
    <feedburner:origLink>http://www.subblue.com/blog/2008/9/28/welcome</feedburner:origLink></item>
  </channel>
</rss>
