<?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>benwatts.ca &#187; sunflower</title>
	<atom:link href="http://www.benwatts.ca/tag/sunflower/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.benwatts.ca</link>
	<description>The crazy ramblings of designer/web developer Ben Watts.</description>
	<lastBuildDate>Sun, 05 Sep 2010 01:49:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Sunflowers, Spirals, Flash</title>
		<link>http://www.benwatts.ca/2009/06/28/sunflowers-spirals-flash/</link>
		<comments>http://www.benwatts.ca/2009/06/28/sunflowers-spirals-flash/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 13:44:01 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[sunflower]]></category>

		<guid isPermaLink="false">http://www.benwatts.ca/?p=472</guid>
		<description><![CDATA[Recently a project came up that had the potential to use an abstract sunflower as a lovely motif. After looking into it a bit, there happened to be an equation describing the arrangement of seeds in a sunflower. The equations looked fairly straightforward, but I&#8217;m no math wizard and had no idea to figure out [...]]]></description>
			<content:encoded><![CDATA[<p>Recently a project came up that had the potential to use an abstract sunflower as a lovely motif. After looking into it a bit, there happened to be an <a href="http://en.wikipedia.org/wiki/Sunflower#Mathematical_model_of_floret_arrangement">equation describing the arrangement of seeds in a sunflower</a>. The equations looked fairly straightforward, but I&#8217;m no math wizard and had no idea to figure out the x and y coordinates of the &#8216;seeds&#8217;, but lucky for me I happen to sit across from <a title="Rob Villeneuve" href="http://deletedtheory.com/blog/">someone</a> who knows what the hell they&#8217;re doing and as a result I have a simple sunflower generator:</p>
<div id="sunflower-placeholder">To view this content, JavaScript must be enabled, and you need the latest version of the <a href="http://get.adobe.com/flashplayer/">Adobe Flash Player</a>.</div>
<p><script type="text/javascript">
                    // <![CDATA[
                    var flashvars = {};
                    var params = {}
                    var attributes = {};
                    swfobject.embedSWF("/wp-content/uploads/2009/06/Sunflower.swf", "sunflower-placeholder", "560", "460", "9.0.0", false, flashvars, params, attributes);
                    //]]&gt;
</script> </p>
<p><span id="more-472"></span></p>
<h3>The Code</h3>
<p>You will need to have a Slider component in your library for this to compile (or remove all references to the slider until it compiles). If you&#8217;re into this type of thing then definitely play around with the constant scaling factor, max number of seeds, and the golden ratio number in the angle (137.5).</p>
<div class="codecolorer-container actionscript3 " style="overflow:auto;white-space:nowrap;width:540px;height:300px"><div class="actionscript3 codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="coMULTI">/** <br />
&nbsp;* Sunflower Generator <br />
&nbsp;* June 28, 2009 <br />
&nbsp;*<br />
&nbsp;* @author&nbsp; &nbsp; &nbsp; Ben Watts<br />
&nbsp;* @url &nbsp; &nbsp; &nbsp; &nbsp; http://www.benwatts.ca/<br />
&nbsp;* @post&nbsp; &nbsp; &nbsp; &nbsp; http://www.benwatts.ca/2009/06/28/sunflowers-spirals-flash/<br />
&nbsp;**/</span><br />
<br />
<span class="kw4">package</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.display</span>.<span class="sy0">*</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> fl.controls.Slider;<br />
&nbsp; &nbsp; <span class="kw1">import</span> fl.events.SliderEvent;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">class</span> Sunflower extends <span class="kw5">MovieClip</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> maxSeeds<span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">9000</span>; &nbsp;<span class="co1">// # of seeds</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw7">c</span><span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">4</span>; <span class="co1">// constant scaling factor (distance btw seeds)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw7">angle</span><span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw3">function</span> Sunflower<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawSunflower<span class="br0">&#40;</span>.1<span class="br0">&#41;</span>; <span class="co1">// start with something </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> slider<span class="sy0">:</span>Slider = <span class="kw1">new</span> Slider<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.liveDragging = <span class="kw1">true</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.minimum = <span class="nu0">1</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.setSize<span class="br0">&#40;</span><span class="nu0">150</span>, <span class="nu0">5</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.<span class="kw7">x</span> = <span class="kw7">stage</span>.<span class="kw7">stageWidth</span> <span class="sy0">-</span> slider.<span class="kw7">width</span> <span class="sy0">-</span> <span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.<span class="kw7">y</span> = <span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slider.<span class="kw7">addEventListener</span><span class="br0">&#40;</span>SliderEvent.<span class="kw8">CHANGE</span>, sliderChange<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addChild</span><span class="br0">&#40;</span>slider<span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Event handler, whenever the slider's value changes <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp; e &nbsp; - SliderEvent<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> sliderChange<span class="br0">&#40;</span>e<span class="sy0">:</span>SliderEvent<span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawSunflower<span class="br0">&#40;</span>e.<span class="kw7">value</span><span class="sy0">/</span><span class="nu0">10</span><span class="br0">&#41;</span>; <span class="co1">// returns value btw 1.0 and 10.0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Draws the sunflower. <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; @param &nbsp;&nbsp; &nbsp; value &nbsp; - the % of the max number of seeds that are set to be drawn. Expects a float 0 - 1.0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> drawSunflower<span class="br0">&#40;</span><span class="kw7">value</span><span class="sy0">:</span><span class="kw5">Number</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> n<span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">0</span>; <span class="co1">// current seed</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> numSeeds<span class="sy0">:</span><span class="kw5">Number</span> = maxSeeds <span class="sy0">*</span> <span class="kw7">value</span>; <span class="co1">// how many seeds should be made</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">removeChild</span><span class="br0">&#40;</span><span class="kw7">getChildByName</span><span class="br0">&#40;</span><span class="st0">'seed-container'</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span><span class="br0">&#40;</span>e<span class="sy0">:</span><span class="kw5">Error</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="coMULTI">/* this makes me a terrible person, i know. */</span> <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> container<span class="sy0">:</span><span class="kw5">MovieClip</span> = <span class="kw1">new</span> <span class="kw5">MovieClip</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span class="kw7">name</span> = <span class="st0">'seed-container'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addChild</span><span class="br0">&#40;</span>container<span class="br0">&#41;</span>;<br />
<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span> n; n <span class="sy0">&lt;</span> numSeeds; n<span class="sy0">++</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> seed<span class="sy0">:</span><span class="kw5">Sprite</span> = <span class="kw1">new</span> <span class="kw5">Sprite</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seed.<span class="kw7">graphics</span>.<span class="kw7">beginFill</span><span class="br0">&#40;</span>0xff0000 <span class="sy0">-</span> <span class="br0">&#40;</span>n<span class="sy0">*</span><span class="nu0">15</span><span class="br0">&#41;</span>, <span class="nu0">1.0</span><span class="br0">&#41;</span>; <span class="co1">// messing with seed colour, don't really know what i'm doing ;)</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seed.<span class="kw7">graphics</span>.<span class="kw7">drawCircle</span><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">2</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seed.<span class="kw7">graphics</span>.<span class="kw7">endFill</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> r<span class="sy0">:</span><span class="kw5">Number</span> = <span class="kw7">c</span> <span class="sy0">*</span> <span class="kw5">Math</span>.<span class="kw7">sqrt</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw7">angle</span><span class="sy0">:</span><span class="kw5">Number</span> = n <span class="sy0">*</span> <span class="nu0">137.5</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seed.<span class="kw7">x</span> = r <span class="sy0">*</span> <span class="kw5">Math</span>.<span class="kw7">sin</span><span class="br0">&#40;</span><span class="kw7">angle</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seed.<span class="kw7">y</span> = r <span class="sy0">*</span> <span class="kw5">Math</span>.<span class="kw7">cos</span><span class="br0">&#40;</span><span class="kw7">angle</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span class="kw7">addChild</span><span class="br0">&#40;</span>seed<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// centre on the stage</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span class="kw7">x</span> <span class="sy0">+</span>= <span class="kw7">stage</span>.<span class="kw7">stageWidth</span><span class="sy0">/</span><span class="nu0">2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.<span class="kw7">y</span> <span class="sy0">+</span>= <span class="kw7">stage</span>.<span class="kw7">stageHeight</span><span class="sy0">/</span><span class="nu0">2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.benwatts.ca/2009/06/28/sunflowers-spirals-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
