<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soulwire &#187; Generative</title>
	<atom:link href="http://blog.soulwire.co.uk/tag/generative/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.soulwire.co.uk</link>
	<description>Art + Technology</description>
	<lastBuildDate>Mon, 21 Mar 2011 22:27:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Noise-Reactive Particle Sphere</title>
		<link>http://blog.soulwire.co.uk/laboratory/cinder/noise-reactive-particle-sphere</link>
		<comments>http://blog.soulwire.co.uk/laboratory/cinder/noise-reactive-particle-sphere#comments</comments>
		<pubDate>Wed, 23 Feb 2011 11:01:06 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Cinder]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1289</guid>
		<description><![CDATA[Music is Ybe 76 by Subheim I&#8217;ve been trying to find more time lately to experiment with C++ and get more familiar with the OpenGL API and to achieve this have been using the excellent Cinder library. I&#8217;m a complete C++ novice and, coming from a Flash background, it&#8217;s immediately apparent how much of the [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/20266917?title=0&amp;byline=0&amp;portrait=0&amp;color=29cad4" width="710" height="399" frameborder="0"></iframe></p>
<p><em>Music is <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.last.fm/music/Subheim/_/Ybe+76"  target="_blank">Ybe 76</a> by <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.subheim.com/"  target="_blank">Subheim</a></em></p>
<p>I&#8217;ve been trying to find more time lately to experiment with C++ and get more familiar with the OpenGL API and to achieve this have been using the excellent <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://libcinder.org/"  target="_blank">Cinder</a> library. I&#8217;m a complete C++ novice and, coming from a Flash background, it&#8217;s immediately apparent how much of the hard work had been done for you in higher level languages like AS3. Learning about pointers, memory allocation and fumbling your way around undescriptive compile errors is bit of an eye opener, although thankfully libraries like <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://libcinder.org/"  target="_blank">Cinder</a> and <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.openframeworks.cc/"  target="_blank">OpenFrameworks</a> help take a lot of the pain out of the transition and ultimately function as very exciting and inspiring tools to work with.<span id="more-1289"></span></p>
<p>Up until now I&#8217;ve been keeping most of these experiments to myself (although some crop up on my <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.flickr.com/photos/soulwire/sets/"  target="_blank">Flickr stream</a> from time to time), but I&#8217;ve decided to start sharing the processes when I can &#8211; so that you can tell me what I&#8217;m doing wrong and teach me the right way! Or, if you&#8217;re like me and are used to languages like AS3, JavaScript and Processing / Java, but are wanting to take your creative coding into other environments; maybe you can learn a little bit from what I&#8217;ve been trying.</p>
<p>Either way, the Noise Sphere experiment, though not particularly original; made me realise that the processes involved spanned many of the key aspects of programming that I&#8217;m both interested in but also keen to learn much more about.</p>
<p>The plan is to release a series of relatively quick tutorials, taking you through the process of creating the sketch you can see in the video above (and far beyond, into OpenGL shaders etc) and in doing so cover roughly the following topics:</p>
<ul>
<li>Setting up Cinder</li>
<li>Geometry: Vectors &amp; Matrices</li>
<li>Movement &amp; Dynamics</li>
<li>Procedural Mesh Generation</li>
<li>OpenGL: GLSL, Vertex &amp; Fragment Shaders</li>
</ul>
<p>I&#8217;m certainly not claiming to be an expert in these topics, in fact in some I&#8217;m only just getting started. But my hope is that I can share my discoveries as they happen and pass on knowledge I&#8217;ve picked up from the community, in case it helps other developers travelling along similar trajectories to myself. I&#8217;ve found a lot of amazing resources for learning, but have often felt that some of them would benefit from being translated for interactive developers such as myself, who come from more of a creative than technical background.</p>
<p>Pester me if part one isn&#8217;t out soon!</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/cinder/noise-reactive-particle-sphere/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>What The Fuck Is My Mashup?</title>
		<link>http://blog.soulwire.co.uk/laboratory/javascript/what-the-fuck-is-my-mashup</link>
		<comments>http://blog.soulwire.co.uk/laboratory/javascript/what-the-fuck-is-my-mashup#comments</comments>
		<pubDate>Mon, 07 Feb 2011 16:56:46 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Miscellany]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1279</guid>
		<description><![CDATA[The fruits of a Sunday hangover; What The Fuck Is My Mashup? is an idea generator for ridiculous (but sometimes plausible) mashups. Inspired by What The Fuck Should I Make For Dinner by Zach Golden, WTFIMM is a simple JavaScript based randomiser that takes a series of templates and a corpus of words and turns [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/javascript/springboard-javascript-css-html-template' rel='bookmark' title='Permanent Link: Introducing Springboard'>Introducing Springboard</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.soulwire.co.uk/wp-content/uploads/2011/02/wtfimm.jpg" alt="What The Fuck Is My Mashup" title="What The Fuck Is My Mashup" width="710" height="360" /></p>
<p>The fruits of a Sunday hangover; <a href="http://whatthefuckismymashup.com/"  title="What The Fuck Is My Mashup" target="_blank">What The Fuck Is My Mashup?</a> is an idea generator for ridiculous (but sometimes plausible) <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)"  target="_blank">mashups</a>.<span id="more-1279"></span></p>
<p>Inspired by <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.whatthefuckshouldimakefordinner.com/" >What The Fuck Should I Make For Dinner</a> by <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.zachgolden.com/"  target="_blank">Zach Golden</a>, <strong>WTFIMM</strong> is a simple JavaScript based randomiser that takes a series of templates and a corpus of words and turns them into concepts that utilise the latest technologies, APIs and social media platforms.</p>
<p>I&#8217;ve abstracted the code into a simple framework which I&#8217;ve called the <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/https://github.com/soulwire/WTFEngine"  target="_blank">WTF Engine</a>, that allows you to create a generator for any subject.</p>
<p>Here are a few of my favourite generative mashups so far:</p>
<ul>
<li>Blackberry application that generates poetry based on Yelp data</li>
<li>Platform for building Wii controlled, memcached dashboard widgets for Open Frameworks enabled devices</li>
<li>Windows optimised GMail configurator for social microblogging</li>
<li>Podcast that generates poetry based on Google Earth data</li>
<li>Scalable, PHP based Feedburner API explorer with a hand tracking front-end</li>
<li>Feature detecting blogging platform for Lingo, Haxe and AS3</li>
<li>Pascal based kiosk to replace data visualisations and hook into GMail via Twitter and Google Maps</li>
<li>Multi-touch, open source Digg microblogging utility powered by Slashdot and the Google Gears C# API</li>
<li>Platform for building dynamic, Wii controlled iPad applications for MATLAB enabled devices</li>
<li>Python based Del.icio.us and GitHub mashup, designed for generative gaming</li>
<li>Objective C interpreter for creating dynamic microblogging experiences in JavaScript</li>
<li>Scalable, Wii controlled GitHub shopping utility powered by Foursquare &#038; the Yahoo Pipes API</li>
<li>Ajax based platform for rapidly developing kiosks based on Google Gears data</li>
<li>Perl based platform for rapidly developing art installations based on GitHub data</li>
</ul>
<p>The <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/https://github.com/soulwire/WTFEngine"  target="_blank">WTF Engine code</a> and this particular implementation is available in my <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/https://github.com/soulwire"  target="_blank">GitHub repository</a>.</p>
<p>Have fun, and if for any bizarre reason you make one of them, let me know!</p>
<p><a href="http://whatthefuckismymashup.com/"  target="_blank" title="What The Fuck Is My Mashup">http://whatthefuckismymashup.com/</a></p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/javascript/springboard-javascript-css-html-template' rel='bookmark' title='Permanent Link: Introducing Springboard'>Introducing Springboard</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/javascript/what-the-fuck-is-my-mashup/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AS3 Particle Node Sequencer</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer#comments</comments>
		<pubDate>Sat, 09 Oct 2010 12:31:40 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Autonomous]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Flash Player 10]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1177</guid>
		<description><![CDATA[An experimental particle based audio sequencer, created in Flash using Tonfall; the new open source AS3 audio engine produced by Andre Michelle


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/10/tonfall-sequencer.swf" rel="lightbox;width=900;height=620;" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2010/10/tonfall-sequencer.jpg" alt="Tonfall Sequencer" title="Tonfall Sequencer"/></a></p>
<p>(You can <strong>drag</strong> each node and switch off the <em>wander</em> behaviour to create your own compositions).</p>
<p>At <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://flashonthebeach.com/"  target="_blank">Flash on the Beach</a> this year, I had the privilege of seeing <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.andre-michelle.com/"  target="_blank">Andre Michelle</a> speak. It was great to hear him explain some of his fantastic work behind <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.audiotool.com/"  target="_blank">audiotool</a> and to see and hear some more of his audio experiments.<span id="more-1177"></span></p>
<p>He also introduced <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://code.google.com/p/tonfall/"  target="_blank">Tonfall</a>, which is an open source AS3 framework designed to get people started with Audio programming in Flash. From the horses mouth; &#8220;Tonfall introduces only a vague design of an audio engine and is rather focussed on readability and simplicity than performance optimizations&#8221;.</p>
<p>I know that I&#8217;m not alone in feeling inspired by what Andre has done for the Flash platform, particularly when it comes to audio, yet lack the knowledge he has invested so much time and hard work in acquiring. The fact that he&#8217;s now sharing it with the ret of us for free was more than enough impetus to have a crack at it myself.</p>
<p>So this is my first test with the framework, which although not extensively documented (at the time of writing), was quite easy to pick up and get going with.</p>
<p>This <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/10/synthesiser.swf" rel="lightbox;width=900;height=650;" >sequencer</a> is based around physical nodes, which connect to produce a variety of tones. There are two types of node, a <em>neuron</em> and a <em>receptor</em>, which are connected by <em>synapses</em> (apologies for the trite analogies). Neurons fire periodically, and if within a certain proximity of a receptor, this message is sent at a fixed speed along the bridging synapse. When the message arrives, the receptor is activated and responds by queuing it&#8217;s individual tone within the audio engine. Each receptor owns a randomly assigned note, and each neuron a randomly assigned octave; therefor a receptor will play it&#8217;s note in several different octaves depending on which neuron causes it to fire.</p>
<p>The download includes the builds of <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://code.google.com/p/tonfall/"  target="_blank">Tonfall</a> by Andre Michelle and <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.minimalcomps.com/"  target="_blank">Minimal Comps</a> by Keith Peters that I&#8217;m using.</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=ParticleSequencer.zip" class="download" title="Particle Sequencer: AS3 Particle Audio Sequencer built with Tonfall Audio Engine"  rel="nofollow"><strong>Download:</strong> Particle Sequencer</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer/feed</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Recursive Polygon Subdivision</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision#comments</comments>
		<pubDate>Thu, 27 May 2010 12:51:48 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1131</guid>
		<description><![CDATA[This is a little algorithm I sketched in my moleskin on the train and for once had the free time to build. The idea is to split a convex polygon between two line segments, creating two new polygons. Each shape is pushed into a queue ready to be subdivided itself. Despite the simplicity of the [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001_001.jpg" alt="Recursive Subdivision" title="Recursive Subdivision" width="710" height="360" class="alignnone size-medium wp-image-1134" /></a></p>
<p>This is a little algorithm I sketched in my <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.moleskine.co.uk/products/"  target="_blank">moleskin</a> on the train and for once had the free time to build. The idea is to split a convex polygon between two line segments, creating two new polygons. Each shape is pushed into a queue ready to be subdivided itself. Despite the simplicity of the algorithm, the results are quite nice and with certain configurations often far removed from what I would have expected &#8211; surprise is always good.<span id="more-1131"></span></p>
<h3>The Subdivide Algorithm</h3>
<p>Here are the basic steps used to create the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" >sketch</a> above:</p>
<ul>
<li>Create the first polygon</li>
<li>Pick two adjacent vertices at random</li>
<li>Use linear interpolation to find a point between them <em>(P1)</em></li>
<li>You now have a point on one line segment connecting the two vertices</li>
<li>Choose another line segment from the polygon</li>
<li>Find a point along this line segment <em>(P2)</em></li>
<li>Build a new polygon by moving clockwise from <em>P1</em> to <em>P2</em></li>
<li>Build a second polygon by moving clockwise from <em>P2</em> back to <em>P1</em></li>
<li>Splice the original polygon from the list and insert the two new ones</li>
<li>Choose a polygon from the list and <em>(&uarr;repeat)</em></li>
</ul>
<p>Very simple, but you can start to have fun with each of these steps to produce different results. Here are some of the variations which can be created with the <a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/05/SD001.swf"  rel="lightbox;width=900;height=650;" >demo</a>.</p>
<ul>
<li>Choose line segments to cut at random</li>
<li>Always subdivide between the two longest line segments</li>
<li>Always interpolate (choose points) half way along segments</li>
<li>Choose points at random positions along line segments</li>
<li>Only mark some polygons eligible for subdivision</li>
<li>Vary the minimum area of divisible polygons</li>
</ul>
<h3>Source Code</h3>
<p>The <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://code.google.com/p/soulwire/source/browse/trunk/projects/Subdivide/SD001/src/geom/Polygon.as"  target="_blank">Polygon</a> class is a DisplayObject (it extends Sprite) and implements it&#8217;s own draw method. I&#8217;ve had a lot of fun filling the shapes with textures, but kept it minimal for the example. One technique which I found worked well was to choose two vertices and compute the angle between them. From this I created a transformation matrix to use with <em>Graphics.beginBitmapFill</em>, giving the sketch a more 3 dimensional feel as if the collection of polygons was a 3D mesh with textures mapped to it. I&#8217;ll put these examples on Flickr soon.</p>
<p>If you&#8217;re interested in the source code, it&#8217;s available in my <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://code.google.com/p/soulwire/"  target="_blank">code repository</a> or you can download the archive below (for the demo GUI, I am using <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://minimalcomps.com/"  target="_blank">minimal comps</a> courtesy of Keith Peters and for image encoding, Ian McLean&#8217;s <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.auricom.com/devote/an-asynchronous-vector-optimized-jpeg-encoder"  target="_blank">asynchronous JPEG encoder</a> &#8211; thanks guys :).</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=Subdivision.zip" class="download" title="Recursive Subdivision: Recursive Polygon Subdivision demo and source code"  rel="nofollow"><strong>Download:</strong> Recursive Subdivision</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata' rel='bookmark' title='Permanent Link: 2D Cellular Automata'>2D Cellular Automata</a></li>
<li><a href='http://blog.soulwire.co.uk/code/actionscript-3/webcam-motion-detection-tracking' rel='bookmark' title='Permanent Link: AS3 Webcam Motion Tracking'>AS3 Webcam Motion Tracking</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Generative Prints for Ishihara</title>
		<link>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara</link>
		<comments>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara#comments</comments>
		<pubDate>Fri, 12 Feb 2010 00:28:10 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Sketchbook]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=1042</guid>
		<description><![CDATA[These are some old prints that I made for an exhibition called Ishihara, back in 2008. They&#8217;re created using a tool I built called Rotator, which degrades vector drawings as they are printed to a bitmap, whilst following the path of a random wander. I found them on an old hard drive and thought I&#8217;d [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/illustration/illustrated-iching-hexagrams' rel='bookmark' title='Permanent Link: Illustrated IChing'>Illustrated IChing</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1043" title="Ishihara Drawing 1" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara-cover.jpg" alt="Ishihara Drawing 1" width="710" height="360" /></p>
<p>These are some old prints that I made for an exhibition called <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.facebook.com/group.php?gid=35280706927" >Ishihara</a>, back in 2008. They&#8217;re created using a tool I built called <em>Rotator</em>, which degrades vector drawings as they are printed to a bitmap, whilst following the path of a random wander. I found them on an old hard drive and thought I&#8217;d share.<span id="more-1042"></span></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara001.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 001" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara001-710x471.jpg" alt="Ishihara Rotator Print 001" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara002.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 002" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara002-710x471.jpg" alt="Ishihara Rotator Print 002" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara003.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 003" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara003-710x471.jpg" alt="Ishihara Rotator Print 003" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara004.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 004" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara004-710x471.jpg" alt="Ishihara Rotator Print 004" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara005.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 005" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara005-710x471.jpg" alt="Ishihara Rotator Print 005" width="710" height="471" /></a></p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara006.jpg"  rel="shadowbox[post-1042];player=img;"><img class="alignnone size-medium wp-image-1044" title="Ishihara Rotator Print 006" src="http://blog.soulwire.co.uk/wp-content/uploads/2010/02/ishihara006-710x471.jpg" alt="Ishihara Rotator Print 006" width="710" height="471" /></a></p>
<p>On reflection, the morphing shapes mixed with simple line drawings remind me of James Paterson&#8217;s work over at <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.presstube.com" >presstube</a> or Victor Taba&#8217;s <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.victortaba.com/" >animations</a> (but not as good as either). I&#8217;ll see if the hard drive has the Rotator AIR app these were made with on there somewhere too, it could be fun to play around with adding some colour and using more complicated vectors.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/art-design/illustration/illustrated-iching-hexagrams' rel='bookmark' title='Permanent Link: Illustrated IChing'>Illustrated IChing</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/illustration/generative-illustrations-for-ishihara/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Technical Tentacles</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles#comments</comments>
		<pubDate>Tue, 26 May 2009 19:08:17 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Flash Player 10]]></category>
		<category><![CDATA[Pixel Bender]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=360</guid>
		<description><![CDATA[I’ve been revisiting one of my favourite topics lately &#8211; recursion &#8211; and have been getting together a bunch of sketches for a big personal project I’m working on (more on that another time). Anyway, I inadvertently stumbled across quite a nice way of making things grow in a convincing manner, and whilst this script [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/05/tenticles.swf" rel="lightbox;width=900;height=760" title="Pixel Bender Generative Tentacles" ><img src="http://blog.soulwire.co.uk/wp-content/uploads/2009/05/tentacles-cropped-710x326.jpg" alt="Generative Tentacles" title="Generative Tentacles" width="710" height="326" class="alignnone size-medium wp-image-509" /></a></p>
<p>I’ve been revisiting one of my favourite topics lately &#8211; <strong><a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://en.wikipedia.org/wiki/Recursion"  target="_blank">recursion</a></strong> &#8211; and have been getting together a bunch of sketches for a big personal project I’m working on <em>(more on that another time)</em>. Anyway, I inadvertently stumbled across quite a nice way of making things grow in a convincing manner, and whilst this script doesn’t actually use recursion ‘per se’, I thought it was kind of cool so I ran with it.<span id="more-360"></span></p>
<p>It also presented a good opportunity to try out another Flash Player 10 feature that I’ve been eager to try, which is using <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://labs.adobe.com/technologies/pixelbender/"  target="_blank"><strong>Pixel Bender</strong></a> and <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://livedocs.adobe.com/flex/3/langref/flash/display/ShaderJob.html"  target="_blank"><strong>ShaderJob</strong></a>. Although I’ve used Pixel Bender before, I’ve never used it in this way.</p>
<p>Basically, the idea is to exploit Pixel Bender’s performance and ask it to do some of the heavier number crunching for you &#8211; a concept that is currently being used by the Papervision3D team to give some juice to the next release. The other great thing about this approach is that these computations can run in another thread, leaving you more resources for other tasks (like rendering a fishing boat load of tentacles)</p>
<p>So, although this isn’t the best example of using Pixel Bender’s capabilities, it was a nice opportunity to exercise the idea. Each Tentacle starts a new ShaderJob and Pixel Bender whips up some tasty trigonometry for me, before passing it back inside a <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://livedocs.adobe.com/flex/3/langref/Vector.html"  target="_blank">Vector</a> object (typed Array). From there it’s just a question of making those numbers look nice&#8230; Kind of reminds me of the illustrative style used for the <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://oreilly.com/"  target="_blank">O&#8217;Reilly</a> book covers&#8230;</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/pixel-bender-growing-tentacles/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>More Music Visualisations</title>
		<link>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations</link>
		<comments>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations#comments</comments>
		<pubDate>Tue, 17 Mar 2009 14:07:44 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Transmissions]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Visualisation]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=322</guid>
		<description><![CDATA[Just a quick (and slightly belated) announcement. The distinguished Bandcamp has recently been regaled with another round of audio-visual snacks. I&#8217;ve had a lot of fun working on them, and there will be even more in the not too distant future. The whole Bandcamp site in fact is bursting with more and more tasty new [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: Bandcamp Music Visualisations'>Bandcamp Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-525" title="Bandcamp Music Visualisations" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/bandcamp.jpg" alt="Bandcamp Music Visualisations" width="710" height="352" /></p>
<p><strong>Just a quick</strong> (and slightly belated) <strong>announcement</strong>.</p>
<p>The distinguished <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://bandcamp.com/" title="Bandcamp"  target="_blank">Bandcamp</a> has recently been regaled with another round of audio-visual snacks. I&#8217;ve had a lot of fun working on them, and there will be even more in the not too distant future.</p>
<p>The whole Bandcamp site in fact is bursting with more and more <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://bandcamp.com/features"  target="_blank">tasty new features</a> which you should check out. In terms of my little contribution on the music visualistions front, there are currently four new full fat flavors to feast on…<span id="more-322"></span></p>
<p><strong>Ribbons</strong> » which uses my <a href="http://blog.soulwire.co.uk/code/actionscript-3/papervision3d-ribbons" title="Papervision3D Ribbon Class" >Papervision3D Ribbons Class</a> and is designed for crunching riffs and hard beats.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/ribbons-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-528" title="Ribbons Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/ribbons-big-710x177.jpg" alt="Ribbons Visualisation" width="710" height="177" /></a></p>
<p><strong>Strata</strong> » which was inspired by stream-graphs and rock formations, and flows like a charred pizza in a log-flume along an imaginary Teflon oven dish.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/strata-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-529" title="Strata Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/strata-big-710x177.jpg" alt="Strata Visualisation" width="710" height="177" /></a></p>
<p><strong>Plughole</strong> » which comprises of disembodied appendages and iconography encapsulating the zeitgeist of generation stupid &#8211; mashes the aforementioned archetypes up into crumbs before offering them to the esophagus of oblivion.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/plughole-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-527" title="Plughole Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/plughole-big-710x177.jpg" alt="Plughole Visualisation" width="710" height="177" /></a></p>
<p><strong>Hypno</strong> » which was designed to bring about universal harmony and spiritual equilibrium but accidentally caused the credit crunch.</p>
<p><a href="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/hypno-big.jpg" rel="lightbox[bandcamp]" ><img class="alignnone size-medium wp-image-526" title="Hypno Visualisation" src="http://blog.soulwire.co.uk/wp-content/uploads/2009/03/hypno-big-710x177.jpg" alt="Hypno Visualisation" width="710" height="177" /></a></p>
<p>You can see them in action by visiting an <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://bandcamp.com/artists" title="Artists on Bandcamp"  target="_blank">artist&#8217;s</a> page (such as <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://hotbitcharsenal.bandcamp.com/" title="Hot Bitch Arsenal on Bandcamp"  target="_blank">Hot Bitch Arsenal</a> or <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://patttten.bandcamp.com/" title="Patterns on Bandcamp"  target="_blank">Pattern</a>), hitting play and selecting a visualisation from the pop-out menu underneath the cover art.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/art-design/portfolio/bandcamp-music-visualisations' rel='bookmark' title='Permanent Link: Bandcamp Music Visualisations'>Bandcamp Music Visualisations</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/actionscript3-dynamic-sound-visualisation' rel='bookmark' title='Permanent Link: AS3 Music Visualisation'>AS3 Music Visualisation</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-tonfall-particle-node-sequencer' rel='bookmark' title='Permanent Link: AS3 Particle Node Sequencer'>AS3 Particle Node Sequencer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/portfolio/more-bandcamp-music-visualisations/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>2D Cellular Automata</title>
		<link>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata</link>
		<comments>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata#comments</comments>
		<pubDate>Tue, 06 May 2008 13:16:41 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Autonomous]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[Emergence]]></category>
		<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=69</guid>
		<description><![CDATA[Inspired by Conway’s game of life, I decided to program a 2 dimensional Cellular Automaton in Actionscript 3. I had been reading up on complexity theory for a recent project and the Cellular Automata just kept on rearing its head. Of course it displays the fundamental qualities of complexity; starting with an object following a [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a rel="lightbox;width=800;height=525;" title="2D Cellular Automata" href="http://blog.soulwire.co.uk/wp-content/uploads/2008/05/cellular-automata.swf"><img src="http://blog.soulwire.co.uk/wp-content/uploads/2008/05/cellular-automata-710x326.jpg" alt="2D Cellular Automata" title="2D Cellular Automata" width="710" height="326" class="alignnone size-medium wp-image-689" /></p>
<p></a>Inspired by <strong>Conway’s game of life</strong>, I decided to program a <strong>2 dimensional Cellular Automaton</strong> in Actionscript 3.</p>
<p>I had been reading up on complexity theory for a recent project and the Cellular Automata just kept on rearing its head. Of course it displays the fundamental qualities of complexity; starting with an object following a set of simple rules and then creating multiple instances to form complex and unpredictable patterns.<span id="more-69"></span></p>
<p>In terms of visualisation, the Cellular Automata is interesting because it has potential to be used for many applications. Complexity Theory and Systems Theory are used to simulate various growth patterns such as that of a city or population. My personal ideas are of course much simpler, one being a 3 dimensional version which uses <strong>Papervision 3D</strong>; and, rather than switching cells on or off, would incrementally grow or shrink shapes in 3D space to create landscapes or cityscapes whose growth is determined by the development of the Automata.</p>
<p>This particular Actionscript 3 version is a fairly direct port of the 2 dimensional ‘Game of Life’ permutation, but is fun to play with none-the-less.</p>
<p><strong>The rules are as follows:</strong></p>
<p>Each cell can be either <strong>empty</strong>, <strong>new</strong>, <strong>alive </strong>or <strong>dead</strong>. As the grid updates, each cell observes its 8 neighbouring cells (or less if it is at a corner or edge) and changes it&#8217;s state depending on the state of said neighbouring cells.</p>
<ul>
<li>If <strong>less than 2 neighbours</strong> are alive, the cell dies <em>(loneliness)</em></li>
<li>If <strong>more than 3 neighbours</strong> are alive, the cell dies <em>(overcrowding)</em></li>
<li>If a living cell has <strong>2 or 3 living neighbours</strong> it continues to live</li>
<li>If a dead cell has <strong>3 living neighbours</strong> it comes to life</li>
</ul>
<p>There are many initial shapes which either form patterns of perpetual growth or at least interesting shapes as the system updates; some simply die out. Have a play and see if you can find shapes, or combinations of shapes which do interesting things. It’s quite addictive!</p>
<p>I have added a few presets to illustrate how certain groupings of cells that are alive when the system starts can behave in the grid as the automaton runs, and also a randomise button which will create a random grid of empty and alive cells and can form some interesting patterns as the system iterates and emergence begins to kick in.</p>
<p>The <a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=cellular-automata.zip" title="Actionscript 3 Cellular Automata source code" >source code</a> is of course available, so have a play with that and see what happens when you change the rules or create bigger grids.</p>
<p><strong>A quick note about the Actionscript.</strong></p>
<p>I have created a <strong>CAGrid </strong>class for building Cellular Automata, which can be instantiated at any size and with any amount of rows and colums.</p>
<pre lang="actionscript">/**
* A grid of cells used to produce a 2 dimensional cellular automata
*
* @param	gridSize	The dimensions in pixels of the grid
* @param	segments	The number of cells in each row or column
* @param	cellPad		The padding (or spacing) inside each cell
*/

public function CAGrid( gridSize:int, segments:int, cellPad:int )</pre>
<p>The CAGrid class contains methods for drawing the grid, resetting the grid, updating the system, randomising cells, saving configurations and loading presets, and is automatically redrawn when the size or rows / columns are changed during runtime using the <strong>size </strong>and <strong>segments </strong>setters respectively.</p>
<p>The <strong>Cell </strong>class contains a simple setter for <strong>status</strong>, and some constants for easy reference to the cell&#8217;s state. In this example the cell is drawn by choosing a colour which corresponds to the state of the cell, but a movieclip with labelled frames (for example) could just as easily be used to create more visually interesting results.</p>
<p>Oh, and included are some <strong>custom skinned CS3 components</strong> (button and comboBox) which look a bit like the Vista skin, so maybe those are goodies in themselves!</p>
<a href="http://blog.soulwire.co.uk/wp-content/plugins/download-monitor/download.php?id=cellular-automata.zip" class="download" title="2D Cellular Automata: An AS3 implementation of Conways' Game of Life. A 2D Cellular Automata with source code and demo."  rel="nofollow"><strong>Download:</strong> 2D Cellular Automata</a>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-flocking-steering-behaviors' rel='bookmark' title='Permanent Link: Flipping you the Boid'>Flipping you the Boid</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/recursive-polygon-subdivision' rel='bookmark' title='Permanent Link: Recursive Polygon Subdivision'>Recursive Polygon Subdivision</a></li>
<li><a href='http://blog.soulwire.co.uk/laboratory/flash/perlin-noise-flow-field' rel='bookmark' title='Permanent Link: Perlin Noise Flow Field'>Perlin Noise Flow Field</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/laboratory/flash/2d-cellular-automata/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Webcam Glitch Art</title>
		<link>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art</link>
		<comments>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art#comments</comments>
		<pubDate>Fri, 09 Nov 2007 14:13:36 +0000</pubDate>
		<dc:creator>Soulwire</dc:creator>
				<category><![CDATA[Generative]]></category>
		<category><![CDATA[Colour]]></category>
		<category><![CDATA[Glitch]]></category>

		<guid isPermaLink="false">http://blog.soulwire.co.uk/?p=47</guid>
		<description><![CDATA[What happens when you let vista install drivers for you? Shit happens. But in this case, good shit. I was playing around with flash and using the Camera class to save stills via the CS3 AIR extension. Unfortunately, my webcam drivers had not been installed correctly, but the results were some really interesting glitches. You [...]


Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009-710x355.jpg" alt="Webcam Glitch Art" title="webcam-glitch-009" width="710" height="355" class="alignnone size-medium wp-image-787" /></p>
<p>What happens when you let vista install drivers for you? Shit happens. But in this case, good shit.<span id="more-47"></span></p>
<p>I was playing around with flash and using the Camera class to save stills via the CS3 AIR extension. Unfortunately, my webcam drivers had not been installed correctly, but the results were some really interesting glitches.</p>

<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-001.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-001'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-001-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-001" title="webcam-glitch-001" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-002.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-002'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-002-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-002" title="webcam-glitch-002" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-003.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-003'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-003-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-003" title="webcam-glitch-003" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-004.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-004'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-004-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-004" title="webcam-glitch-004" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-005.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-005'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-005-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-005" title="webcam-glitch-005" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-006.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-006'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-006-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-006" title="webcam-glitch-006" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-007.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-007'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-007-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-007" title="webcam-glitch-007" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-008.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-008'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-008-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-008" title="webcam-glitch-008" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-009'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-009-155x155.jpg" class="attachment-thumbnail" alt="Webcam Glitch Art" title="webcam-glitch-009" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-010.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-010'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-010-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-010" title="webcam-glitch-010" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-011.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-011'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-011-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-011" title="webcam-glitch-011" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-012.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-012'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-012-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-012" title="webcam-glitch-012" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-013.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-013'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-013-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-013" title="webcam-glitch-013" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-014.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-014'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-014-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-014" title="webcam-glitch-014" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-015.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-015'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-015-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-015" title="webcam-glitch-015" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-016.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-016'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-016-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-016" title="webcam-glitch-016" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-017.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-017'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-017-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-017" title="webcam-glitch-017" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-018.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-018'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-018-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-018" title="webcam-glitch-018" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-019.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-019'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-019-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-019" title="webcam-glitch-019" /></a>
<a href="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-020.jpg"  rel='shadowbox[album-47];player=img;' title='webcam-glitch-020'><img width="155" height="155" src="http://blog.soulwire.co.uk/wp-content/uploads/2007/11/webcam-glitch-020-155x155.jpg" class="attachment-thumbnail" alt="webcam-glitch-020" title="webcam-glitch-020" /></a>

<p>You can see the full set and high res versions on <a rel="nofollow" href="http://blog.soulwire.co.uk//goto/http://www.flickr.com/photos/soulwire/sets/72157603055370065/" title="Webcam Glitch Art"  target="_blank">Flickr</a></p>
<p>It got me thinking about the ByteArray and socket classes in AS3, with some experimentation, maybe there will be a way to screw up BitmapData in a similar way? Bring back the 90’s and the cool glitch art that seemed to be coming out more often then. It’s amazing what eye candy can be produced by malfunctions.</p>


<p>Related posts:<ol><li><a href='http://blog.soulwire.co.uk/laboratory/flash/as3-bitmapdata-glitch-generator' rel='bookmark' title='Permanent Link: Smack My Glitch Up'>Smack My Glitch Up</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.soulwire.co.uk/art-design/generative/webcam-glitch-art/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

