<?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>crtl-i &#187; RhinoScript</title>
	<atom:link href="http://crtl-i.com/blog/category/rhinoscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://crtl-i.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 04:35:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Sub-Dividing</title>
		<link>http://crtl-i.com/blog/2010/03/sub-dividing/</link>
		<comments>http://crtl-i.com/blog/2010/03/sub-dividing/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 09:51:02 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[RhinoScript]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=545</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/03/2.jpg"><img class="alignnone size-full wp-image-547" title="2" src="http://crtl-i.com/blog/wp-content/uploads/2010/03/2.jpg" alt="" width="640" height="419" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/03/1.jpg"><img class="alignnone size-full wp-image-546" title="1" src="http://crtl-i.com/blog/wp-content/uploads/2010/03/1.jpg" alt="" width="640" height="419" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2010/03/sub-dividing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fibrous Art Bridge</title>
		<link>http://crtl-i.com/blog/2010/01/fibrous-art-bridge/</link>
		<comments>http://crtl-i.com/blog/2010/01/fibrous-art-bridge/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:41:07 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Y]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=459</guid>
		<description><![CDATA[These are some images from a recently finished competition.]]></description>
			<content:encoded><![CDATA[<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/11.jpg"><img class="alignnone size-full wp-image-460" title="1" src="http://crtl-i.com/blog/wp-content/uploads/2010/01/11.jpg" alt="" width="640" height="326" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/21.jpg"><img class="alignnone size-full wp-image-461" title="2" src="http://crtl-i.com/blog/wp-content/uploads/2010/01/21.jpg" alt="" width="640" height="481" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/3.jpg"><img class="alignnone size-full wp-image-462" title="3" src="http://crtl-i.com/blog/wp-content/uploads/2010/01/3.jpg" alt="" width="640" height="420" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/4.jpg"><img class="alignnone size-full wp-image-463" title="4" src="http://crtl-i.com/blog/wp-content/uploads/2010/01/4.jpg" alt="" width="640" height="602" /></a></p>
<p>These are some images from a recently finished competition.</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2010/01/fibrous-art-bridge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fibers 2</title>
		<link>http://crtl-i.com/blog/2010/01/fibers-2/</link>
		<comments>http://crtl-i.com/blog/2010/01/fibers-2/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:04:24 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[fiber]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=452</guid>
		<description><![CDATA[Ordered, but random Random, but ordered]]></description>
			<content:encoded><![CDATA[<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/1.jpg"><img src="http://crtl-i.com/blog/wp-content/uploads/2010/01/1-1024x490.jpg" alt="" width="640" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2010/01/2.jpg"><img src="http://crtl-i.com/blog/wp-content/uploads/2010/01/2-1024x364.jpg" alt="" width="640" /></a></p>
<p>Ordered, but random<br />
Random, but ordered</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2010/01/fibers-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fibers</title>
		<link>http://crtl-i.com/blog/2009/12/fibers/</link>
		<comments>http://crtl-i.com/blog/2009/12/fibers/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 06:26:38 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[RhinoScript]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=447</guid>
		<description><![CDATA[Recent explorations on fibrous structures]]></description>
			<content:encoded><![CDATA[<p>Recent explorations on fibrous structures</p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/12/a.jpg"><img class="alignnone size-full wp-image-448" title="a" src="http://crtl-i.com/blog/wp-content/uploads/2009/12/a.jpg" alt="a" width="640" height="307" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/12/b.jpg"><img class="alignnone size-full wp-image-449" title="b" src="http://crtl-i.com/blog/wp-content/uploads/2009/12/b.jpg" alt="b" width="640" height="749" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/12/c1.jpg"><img class="alignnone size-full wp-image-450" title="c" src="http://crtl-i.com/blog/wp-content/uploads/2009/12/c1.jpg" alt="c" width="640" height="1782" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/12/fibers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel-scape</title>
		<link>http://crtl-i.com/blog/2009/08/pixel-scape/</link>
		<comments>http://crtl-i.com/blog/2009/08/pixel-scape/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:15:11 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Landscape]]></category>
		<category><![CDATA[Pixel]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=336</guid>
		<description><![CDATA[I have been exploring this idea of a pixelated landscape. Possibly, a park composed with a few types of regular components like grass, walkways, bench, water, light, etc. A controllable intensity of randomness is introduced. This is an attempt to create a simple green surface with a walkway defined by a curve. The curve attracts/selelcts [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/08/4b.jpg"><img class="alignnone size-full wp-image-340" title="4b" src="http://crtl-i.com/blog/wp-content/uploads/2009/08/4b.jpg" alt="4b" width="640" height="277" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/08/1b.jpg"><img class="alignnone size-full wp-image-337" title="1b" src="http://crtl-i.com/blog/wp-content/uploads/2009/08/1b.jpg" alt="1b" width="640" height="277" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/08/2b.jpg"><img class="alignnone size-full wp-image-338" title="2b" src="http://crtl-i.com/blog/wp-content/uploads/2009/08/2b.jpg" alt="2b" width="640" height="425" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/08/3b.jpg"><img class="alignnone size-full wp-image-339" title="3b" src="http://crtl-i.com/blog/wp-content/uploads/2009/08/3b.jpg" alt="3b" width="640" height="406" /></a></p>
<p>I have been exploring this idea of a pixelated landscape. Possibly, a park composed with a few types of regular components like grass, walkways, bench, water, light, etc. A controllable intensity of randomness is introduced. This is an attempt to create a simple green surface with a walkway defined by a curve. The curve attracts/selelcts the points according to its defined weight.</p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/08/screenshobt.jpg"><img class="alignnone size-full wp-image-341" title="screenshobt" src="http://crtl-i.com/blog/wp-content/uploads/2009/08/screenshobt.jpg" alt="screenshobt" width="640" height="382" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/08/pixel-scape/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attracted Flows</title>
		<link>http://crtl-i.com/blog/2009/07/attracted-flows/</link>
		<comments>http://crtl-i.com/blog/2009/07/attracted-flows/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:01:10 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Attracted]]></category>
		<category><![CDATA[Flows]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=319</guid>
		<description><![CDATA[This is a rhinoscript where you can set various points where vectors flow out from according to a certain velocity. As these vectors travel, the flows are attracted to the various attractor points in different weights three dimensionally. It simulates a close logic to the emitted particles being attracted to newton forces in Maya. &#8212;- [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/4a.jpg"><img class="alignnone size-full wp-image-323" title="4a" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/4a.jpg" alt="4a" width="640" height="405" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/3a.jpg"><img class="alignnone size-full wp-image-320" title="3a" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/3a.jpg" alt="3a" width="640" height="405" /></a></p>
<p>This is a rhinoscript where you can set various points where vectors flow out from according to a certain velocity. As these vectors travel, the flows are attracted to the various attractor points in different weights three dimensionally. It simulates a close logic to the emitted particles being attracted to newton forces in Maya.</p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/11.jpg"><img class="alignnone size-full wp-image-321" title="1" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/11.jpg" alt="1" width="640" height="547" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/2.jpg"><img class="alignnone size-full wp-image-322" title="2" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/2.jpg" alt="2" width="640" height="572" /></a></p>
<p>&#8212;-</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Option Explicit</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8216;Script written by Howard Jiho Kim / crtl-i.com</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Call Main()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sub Main()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim startPt, velocity</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>velocity = Array(10,0,0)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>startPt = Rhino.GetObjects(&#8220;Select Start Points&#8221;,1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>&#8216;Attractors / Distances</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim no_attr, attr, attrStr, i</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>no_attr = Rhino.GetInteger(&#8220;How many attractors?&#8221;)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>ReDim attr(no_attr-1), attrStr(no_attr-1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>For i=0 To no_attr-1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>attr(i) = Rhino.GetObject(&#8220;Select Attractor &#8221; &amp; (i+1),1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>attrStr(i) = Rhino.GetReal(&#8220;Enter Strength for Attractor &#8221; &amp; (i+1))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Next</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>For i=0 To Ubound(startPt)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Flow velocity, startPt(i), no_attr, attr, attrStr, 35</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Next</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">End Sub</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Function Flow(velocity, startPt, no_attr, attr, attrStr, gens)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim vec1, vec0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec1 = Rhino.VectorCreate(velocity, Array(0,0,0))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec0 = Rhino.VectorCreate(Rhino.PointCoordinates(startPt), Array(0,0,0))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim totalDistance, distance, i</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>ReDim distance(no_attr-1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim vec, finalVec, vec4, tagStop</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>tagStop = 0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>ReDim vec(no_attr-1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Dim newPt, newLine, endPt2</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>totalDistance=0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>If gens&gt;0 Then</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>For i=0 To no_attr-1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>distance(i) = Rhino.Distance(Rhino.PointCoordinates(startPt), Rhino.PointCoordinates(attr(i)))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>totalDistance = totalDistance + distance(i)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Rhino.Print distance(i)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Rhino.Print totalDistance</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>If distance(i) &lt; 1 Then</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>gens = -1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>End If</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Next</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>&#8216;Vectors</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec4 = vec1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>For i=0 To no_attr-1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorCreate(Rhino.PointCoordinates(attr(i)), Rhino.PointCoordinates(startPt))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorUnitize(vec(i))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorScale(vec(i), (attrStr(i)/distance(i))^2)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>vec4 = Rhino.VectorAdd(vec4, vec(i))</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Next</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>finalVec = Rhino.VectorUnitize(vec4)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>finalVec = Rhino.VectorScale(finalVec, 1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>If tagStop = 0 Then</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>newPt = Rhino.AddPoint(finalVec)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>newLine = Rhino.AddLine(Array(0,0,0), finalVec)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>endPt2 = Rhino.MoveObject(newPt, vec0)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>newLine = Rhino.MoveObject(newLine, vec0)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>End If</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>Flow velocity, endPt2, no_attr, attr, attrStr, gens-1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>End If</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1500px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">End Function</div>
<p>Option Explicit</p>
<p>&#8216;Script written by Howard Jiho Kim / crtl-i.com</p>
<p>Call Main()</p>
<p>Sub Main()</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Dim startPt, velocity</p>
<p><span style="white-space: pre;"> </span>velocity = Array(10,0,0)</p>
<p><span style="white-space: pre;"> </span>startPt = Rhino.GetObjects(&#8220;Select Start Points&#8221;,1)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>&#8216;Attractors / Distances</p>
<p><span style="white-space: pre;"> </span>Dim no_attr, attr, attrStr, i</p>
<p><span style="white-space: pre;"> </span>no_attr = Rhino.GetInteger(&#8220;How many attractors?&#8221;)</p>
<p><span style="white-space: pre;"> </span>ReDim attr(no_attr-1), attrStr(no_attr-1)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>For i=0 To no_attr-1</p>
<p><span style="white-space: pre;"> </span>attr(i) = Rhino.GetObject(&#8220;Select Attractor &#8221; &amp; (i+1),1)</p>
<p><span style="white-space: pre;"> </span>attrStr(i) = Rhino.GetReal(&#8220;Enter Strength for Attractor &#8221; &amp; (i+1))</p>
<p><span style="white-space: pre;"> </span>Next</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>For i=0 To Ubound(startPt)</p>
<p><span style="white-space: pre;"> </span>Flow velocity, startPt(i), no_attr, attr, attrStr, 35</p>
<p><span style="white-space: pre;"> </span>Next</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span></p>
<p>End Sub</p>
<p>Function Flow(velocity, startPt, no_attr, attr, attrStr, gens)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Dim vec1, vec0</p>
<p><span style="white-space: pre;"> </span>vec1 = Rhino.VectorCreate(velocity, Array(0,0,0))</p>
<p><span style="white-space: pre;"> </span>vec0 = Rhino.VectorCreate(Rhino.PointCoordinates(startPt), Array(0,0,0))</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Dim totalDistance, distance, i</p>
<p><span style="white-space: pre;"> </span>ReDim distance(no_attr-1)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Dim vec, finalVec, vec4, tagStop</p>
<p><span style="white-space: pre;"> </span>tagStop = 0</p>
<p><span style="white-space: pre;"> </span>ReDim vec(no_attr-1)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Dim newPt, newLine, endPt2</p>
<p><span style="white-space: pre;"> </span>totalDistance=0</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>If gens&gt;0 Then</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>For i=0 To no_attr-1</p>
<p><span style="white-space: pre;"> </span>distance(i) = Rhino.Distance(Rhino.PointCoordinates(startPt), Rhino.PointCoordinates(attr(i)))</p>
<p><span style="white-space: pre;"> </span>totalDistance = totalDistance + distance(i)</p>
<p><span style="white-space: pre;"> </span>Rhino.Print distance(i)</p>
<p><span style="white-space: pre;"> </span>Rhino.Print totalDistance</p>
<p><span style="white-space: pre;"> </span>If distance(i) &lt; 1 Then</p>
<p><span style="white-space: pre;"> </span>gens = -1</p>
<p><span style="white-space: pre;"> </span>End If</p>
<p><span style="white-space: pre;"> </span>Next</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>&#8216;Vectors</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>vec4 = vec1</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>For i=0 To no_attr-1</p>
<p><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorCreate(Rhino.PointCoordinates(attr(i)), Rhino.PointCoordinates(startPt))</p>
<p><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorUnitize(vec(i))</p>
<p><span style="white-space: pre;"> </span>vec(i) = Rhino.VectorScale(vec(i), (attrStr(i)/distance(i))^2)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>vec4 = Rhino.VectorAdd(vec4, vec(i))</p>
<p><span style="white-space: pre;"> </span>Next</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>finalVec = Rhino.VectorUnitize(vec4)</p>
<p><span style="white-space: pre;"> </span>finalVec = Rhino.VectorScale(finalVec, 1)</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>If tagStop = 0 Then</p>
<p><span style="white-space: pre;"> </span>newPt = Rhino.AddPoint(finalVec)</p>
<p><span style="white-space: pre;"> </span>newLine = Rhino.AddLine(Array(0,0,0), finalVec)</p>
<p><span style="white-space: pre;"> </span>endPt2 = Rhino.MoveObject(newPt, vec0)</p>
<p><span style="white-space: pre;"> </span>newLine = Rhino.MoveObject(newLine, vec0)</p>
<p><span style="white-space: pre;"> </span>End If</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>Flow velocity, endPt2, no_attr, attr, attrStr, gens-1</p>
<p><span style="white-space: pre;"> </span></p>
<p><span style="white-space: pre;"> </span>End If</p>
<p><span style="white-space: pre;"> </span></p>
<p>End Function</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/07/attracted-flows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Facade Studies</title>
		<link>http://crtl-i.com/blog/2009/07/facade-studies/</link>
		<comments>http://crtl-i.com/blog/2009/07/facade-studies/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 19:23:03 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Facade]]></category>
		<category><![CDATA[Pixelate]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=312</guid>
		<description><![CDATA[Some facade studies. All these patterns are made through a version of script that is very close to the 3D-pixelate code.]]></description>
			<content:encoded><![CDATA[<p>Some facade studies. All these patterns are made through a version of script that is very close to the 3D-pixelate code.</p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/090706_type_f.jpg"><img class="alignnone size-full wp-image-316" title="090706_type_f" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/090706_type_f.jpg" alt="090706_type_f" width="640" height="604" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/1.jpg"><img class="alignnone size-full wp-image-313" title="1" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/1.jpg" alt="1" width="640" height="239" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/3.jpg"><img class="alignnone size-full wp-image-314" title="3" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/3.jpg" alt="3" width="640" height="426" /></a></p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/07/4.jpg"><img class="alignnone size-full wp-image-315" title="4" src="http://crtl-i.com/blog/wp-content/uploads/2009/07/4.jpg" alt="4" width="640" height="430" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/07/facade-studies/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>3D &#8211; Pixelate</title>
		<link>http://crtl-i.com/blog/2009/06/3d-pixelate/</link>
		<comments>http://crtl-i.com/blog/2009/06/3d-pixelate/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 08:52:16 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Pixelate]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=303</guid>
		<description><![CDATA[This is a script that pixelates point clouds into a user-defined 3-dimensional grid. It also arrays same size boxes to the pixelated points. If used wisely, it could become a good tool to rationalize a nurb surface into many small boxes. It first pixelates the points into a wanted grid. Naturally, the geometry starts to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-307" title="render2" src="http://crtl-i.com/blog/wp-content/uploads/2009/06/render2.jpg" alt="render2" width="640" height="275" /></p>
<p>This is a script that pixelates point clouds into a user-defined 3-dimensional grid. It also arrays same size boxes to the pixelated points. If used wisely, it could become a good tool to rationalize a nurb surface into many small boxes.</p>
<p><img class="alignnone size-full wp-image-304" title="pixelate" src="http://crtl-i.com/blog/wp-content/uploads/2009/06/pixelate.gif" alt="pixelate" width="640" height="392" /></p>
<p>It first pixelates the points into a wanted grid. Naturally, the geometry starts to lose its shape as the pixelating factor grows.</p>
<p><img class="alignnone size-full wp-image-305" title="render" src="http://crtl-i.com/blog/wp-content/uploads/2009/06/render.jpg" alt="render" width="640" height="502" /></p>
<p>Then it populates the points with a box that you define.</p>
<p>&#8212;&#8211;</p>
<p>Option Explicit</p>
<p>&#8216;Script written by Howard Jiho Kim / crtl-i.com</p>
<p>Sub Pixelate</p>
<p><span> </span>Dim strObject, arrPoint, arrObjects, box_pt(7), box</p>
<p><span> </span>arrObjects = Rhino.GetObjects(&#8220;Select points to pixelate&#8221;)</p>
<p><span> </span></p>
<p><span> </span>Dim multiplier_x, m1_x, m2_x, finalHeight_x, arrEnd(2)</p>
<p><span> </span>multiplier_x = Rhino.GetReal(&#8220;Enter Pixelating Factor for X axis (0 for Non-Pixelation): &#8220;)</p>
<p><span> </span></p>
<p><span> </span>Dim multiplier_y, m1_y, m2_y, finalHeight_y</p>
<p><span> </span>multiplier_y = Rhino.GetReal(&#8220;Enter Pixelating Factor for Y axis (0 for Non-Pixelation): &#8220;)</p>
<p><span> </span></p>
<p><span> </span>Dim multiplier_z, m1_z, m2_z, finalHeight_z</p>
<p><span> </span>multiplier_z = Rhino.GetReal(&#8220;Enter Pixelating Factor for Z axis (0 for Non-Pixelation): &#8220;)</p>
<p><span> </span></p>
<p><span> </span>Dim box_yn</p>
<p><span> </span>box_yn = Rhino.GetInteger(&#8220;Create boxes? (1-Yes, 2-No)&#8221;)</p>
<p><span> </span></p>
<p><span> </span></p>
<p><span> </span>If box_yn = 1 Then</p>
<p><span> </span>Dim box_x, box_y, box_z, box_mid_pt(2)</p>
<p><span> </span>box_x = Rhino.GetReal(&#8220;Enter Box size-x: &#8220;)</p>
<p><span> </span>box_y = Rhino.GetReal(&#8220;Enter Box size-y: &#8220;)</p>
<p><span> </span>box_z = Rhino.GetReal(&#8220;Enter Box size-z: &#8220;)</p>
<p><span> </span></p>
<p><span> </span>box_pt(0) = Array(0,0,0)</p>
<p><span> </span>box_pt(1) = Array(box_x,0,0)</p>
<p><span> </span>box_pt(2) = Array(box_x,box_y,0)</p>
<p><span> </span>box_pt(3) = Array(0,box_y,0)</p>
<p><span> </span>box_pt(4) = Array(0,0,box_z)</p>
<p><span> </span>box_pt(5) = Array(box_x,0,box_z)</p>
<p><span> </span>box_pt(6) = Array(box_x,box_y,box_z)</p>
<p><span> </span>box_pt(7) = Array(0,box_y,box_z)</p>
<p><span> </span></p>
<p><span> </span>box_mid_pt(0) = box_x/2</p>
<p><span> </span>box_mid_pt(1) = box_y/2</p>
<p><span> </span>box_mid_pt(2) = box_z/2</p>
<p><span> </span></p>
<p><span> </span>box = Rhino.AddBox(box_pt)</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p>If Not IsNull(arrObjects) Then</p>
<p><span> </span>For Each strObject In arrObjects</p>
<p><span> </span></p>
<p><span> </span>arrPoint=Rhino.PointCoordinates(strObject)</p>
<p><span> </span>Rhino.Print Rhino.Pt2Str(arrPoint, 3)</p>
<p><span> </span></p>
<p><span> </span>If multiplier_x &gt; 0 Then</p>
<p><span> </span>m1_x = arrPoint(0) / multiplier_x</p>
<p><span> </span>m1_x = Rhino.Floor(m1_x)</p>
<p><span> </span>m2_x = (arrPoint(0) &#8211; (m1_x*multiplier_x))*2</p>
<p><span> </span></p>
<p><span> </span>If m2_x &gt; multiplier_x Then m1_x = m1_x+1</p>
<p><span> </span></p>
<p><span> </span>finalHeight_x = m1_x * multiplier_x</p>
<p><span> </span>arrEnd(0) = finalHeight_x</p>
<p><span> </span>ElseIf multiplier_x=0 Then<span> </span></p>
<p><span> </span>arrEnd(0) = arrPoint(0)</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p><span> </span>If multiplier_y &gt; 0 Then</p>
<p><span> </span>m1_y = arrPoint(1) / multiplier_y</p>
<p><span> </span>m1_y = Rhino.Floor(m1_y)</p>
<p><span> </span>m2_y = (arrPoint(1) &#8211; (m1_y*multiplier_y))*2</p>
<p><span> </span></p>
<p><span> </span>If m2_y &gt; multiplier_y Then m1_y = m1_y+1</p>
<p><span> </span></p>
<p><span> </span>finalHeight_y = m1_y * multiplier_y</p>
<p><span> </span>arrEnd(1) = finalHeight_y</p>
<p><span> </span>ElseIf multiplier_y=0 Then<span> </span></p>
<p><span> </span>arrEnd(1) = arrPoint(1)</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p><span> </span>If multiplier_z &gt; 0 Then</p>
<p><span> </span>m1_z = arrPoint(2) / multiplier_z</p>
<p><span> </span>m1_z = Rhino.Floor(m1_z)</p>
<p><span> </span>m2_z = (arrPoint(2) &#8211; (m1_z*multiplier_z))*2</p>
<p><span> </span></p>
<p><span> </span>If m2_z &gt; multiplier_z Then m1_z = m1_z+1</p>
<p><span> </span></p>
<p><span> </span>finalHeight_z = m1_z * multiplier_z</p>
<p><span> </span>arrEnd(2) = finalHeight_z</p>
<p><span> </span>ElseIf multiplier_z=0 Then<span> </span></p>
<p><span> </span>arrEnd(2) = arrPoint(2)</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p><span> </span>Rhino.MoveObject strObject, arrPoint, arrEnd</p>
<p><span> </span></p>
<p><span> </span>If box_yn = 1 Then</p>
<p><span> </span>Rhino.CopyObject box, box_mid_pt, arrEnd</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p><span> </span>Next</p>
<p><span> </span></p>
<p><span> </span>If box_yn = 1 Then</p>
<p><span> </span>Rhino.DeleteObject box</p>
<p><span> </span>End If</p>
<p><span> </span>End If</p>
<p><span> </span></p>
<p>End Sub</p>
<p>Pixelate</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/06/3d-pixelate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Diffuse Curve</title>
		<link>http://crtl-i.com/blog/2009/02/diffuse-curve/</link>
		<comments>http://crtl-i.com/blog/2009/02/diffuse-curve/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 17:31:40 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[curve]]></category>
		<category><![CDATA[diffuse]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=228</guid>
		<description><![CDATA[This is a RhinoScript that I wrote about a few months ago in: http://crtl-i.com/blog/2008/12/diffuse-noise/ It will take a curve and diffuse it into many curves according to a few parameters: devRate: deviation rate vecLenMax: maximum length of a particle vecLenMin: minimum length of a particle noParticle: number of total particles If vecLenMax and vecLenMin are the [...]]]></description>
			<content:encoded><![CDATA[<p>This is a RhinoScript that I wrote about a few months ago in: <a href="http://crtl-i.com/blog/2008/12/diffuse-noise/">http://crtl-i.com/blog/2008/12/diffuse-noise/</a></p>
<p>It will take a curve and diffuse it into many curves according to a few parameters:<br />
devRate: deviation rate<br />
vecLenMax: maximum length of a particle<br />
vecLenMin: minimum length of a particle<br />
noParticle: number of total particles</p>
<p>If vecLenMax and vecLenMin are the same, all the particles will have the same length. </p>
<p>&#8212;</p>
<p>Option Explicit</p>
<p>Call Diffuse()</p>
<p> </p>
<p>Sub Diffuse()</p>
<p> </p>
<p><span> </span>Dim devRate : devRate = 0.01</p>
<p><span> </span>Dim vecLenMax : vecLenMax = 1</p>
<p><span> </span>Dim vecLenMin : vecLenMin = 3</p>
<p><span> </span>Dim noParticle : noParticle = 100</p>
<p> </p>
<p><span> </span>Dim aCrvs : aCrvs = Rhino.GetObjects(&#8220;Select Curves&#8221;, 4)</p>
<p> </p>
<p><span> </span>Dim i,n</p>
<p><span> </span>Dim aPts()</p>
<p><span> </span>Dim crvDom, crvParam, crvLen</p>
<p><span> </span></p>
<p><span> </span>Randomize</p>
<p><span> </span></p>
<p><span> </span>For i = 0 To UBound(aCrvs)</p>
<p> </p>
<p><span> </span>n = 0</p>
<p><span> </span>Dim strCrv : strCrv = aCrvs(i)</p>
<p> </p>
<p><span> </span>crvDom = Rhino.CurveDomain(strCrv)</p>
<p><span> </span>crvLen = Rhino.CurveLength(strCrv)</p>
<p> </p>
<p><span> </span>Rhino.EnableRedraw False</p>
<p> </p>
<p><span> </span>Do Until n = noParticle</p>
<p> </p>
<p><span> </span>crvParam = (RN(0.00, 1.00)) * (crvDom(1))</p>
<p> </p>
<p><span> </span>ReDim Preserve aPts(n)</p>
<p><span> </span>aPts(n) = Rhino.EvaluateCurve(strCrv, crvParam)</p>
<p><span> </span></p>
<p><span> </span>Dim devPt : devPt = aPts(n)</p>
<p><span> </span>Dim devX : devX = crvLen * devRate * RN(-1,1) + devPt(0)</p>
<p><span> </span>Dim devY : devY = crvLen * devRate * RN(-1,1) + devPt(1)</p>
<p><span> </span>Dim devZ : devZ = crvLen * devRate * RN(-1,1) + devPt(2)</p>
<p><span> </span>Dim devPt2 : devPt2 = Array(devX, devY, devZ)</p>
<p><span> </span></p>
<p><span> </span>Dim rndPt : rndPt = Array(RN(-1,1), RN(-1,1), RN(-1,1))</p>
<p><span> </span>Dim rndPt2 : rndPt2 = Rhino.PointAdd(devPt2, rndPt)</p>
<p> </p>
<p><span> </span>If n &gt;= 1 Then</p>
<p><span> </span>Dim vecDir : vecDir = Rhino.AddLine(devPt2, rndPt2)</p>
<p><span> </span>Dim vecLen : vecLen = RN(vecLenMin, vecLenMax)</p>
<p><span> </span>Dim Xform : Xform = Rhino.XformScale(devPt2, vecLen)</p>
<p><span> </span></p>
<p><span> </span>Rhino.TransformObject vecDir, Xform, True</p>
<p><span> </span>End If</p>
<p> </p>
<p><span> </span>n = n + 1</p>
<p> </p>
<p><span> </span>Loop</p>
<p> </p>
<p><span> </span>Rhino.EnableRedraw True</p>
<p><span> </span>Next</p>
<p>End Sub</p>
<p> </p>
<p>Function RN (nMin, nMax)</p>
<p><span> </span>RN = Null</p>
<p><span> </span>Randomize</p>
<p><span> </span>RN = (nMax &#8211; nMin) * Rnd + nMin</p>
<p>End Function</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/02/diffuse-curve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avicular Colonies</title>
		<link>http://crtl-i.com/blog/2009/02/avicular-colonies/</link>
		<comments>http://crtl-i.com/blog/2009/02/avicular-colonies/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 21:03:56 +0000</pubDate>
		<dc:creator>crtl-i</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[RhinoScript]]></category>
		<category><![CDATA[Y]]></category>
		<category><![CDATA[avicular]]></category>
		<category><![CDATA[colonies]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[evolo]]></category>
		<category><![CDATA[skyscraper]]></category>

		<guid isPermaLink="false">http://crtl-i.com/blog/?p=216</guid>
		<description><![CDATA[  This is what we submitted for the Evolo Skyscraper competition. Our design imagines of a world where birds evolve to nest skyscrapers. We didn&#8217;t end up winning any prizes, but it was a fun process nonethless. You can view the winners at: evolo-arch.com   Our final boards can be viewed here:     Concept Statement: [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>This is what we submitted for the Evolo Skyscraper competition. Our design imagines of a world where birds evolve to nest skyscrapers. We didn&#8217;t end up winning any prizes, but it was a fun process nonethless. You can view the winners at: <a href="http://evolo-arch.com/" target="_blank">evolo-arch.com</a></p>
<p><img class="alignnone size-full wp-image-215" title="dsample-01-noise-mesh-array" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/dsample-01-noise-mesh-array.jpg" alt="dsample-01-noise-mesh-array" width="640" height="626" /></p>
<p><img class="alignnone size-full wp-image-218" title="ff" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/ff.jpg" alt="ff" width="640" height="272" /></p>
<p><img class="alignnone size-full wp-image-219" title="growh" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/growh.jpg" alt="growh" width="640" height="688" /></p>
<p><img class="alignnone size-full wp-image-221" title="section" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/section.jpg" alt="section" width="640" height="453" /></p>
<p><img class="alignnone size-full wp-image-220" title="materials" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/materials.jpg" alt="materials" width="640" height="206" /></p>
<p><img class="alignnone size-full wp-image-217" title="2_final" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/2_final.jpg" alt="2_final" width="640" height="447" /></p>
<p> </p>
<p>Our final boards can be viewed here:</p>
<p><a href="http://crtl-i.com/blog/wp-content/uploads/2009/02/0223.jpg"><img class="alignnone size-medium wp-image-213" title="0223" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/0223-300x150.jpg" alt="0223" width="300" height="150" /> </a><a href="http://crtl-i.com/blog/wp-content/uploads/2009/02/02232.jpg"><img class="alignnone size-medium wp-image-214" title="02232" src="http://crtl-i.com/blog/wp-content/uploads/2009/02/02232-300x150.jpg" alt="02232" width="300" height="150" /></a></p>
<p> </p>
<p>Concept Statement:</p>
<p class="MsoNormal">This is a proposal for a skyscraper that perhaps will emerge in the near future, which will surface without the contribution of human effort.<span>  </span>Although it will be the unintended side effect of technological progress, and therefore can ultimately be considered the result of human activity. It is a skyscraper nested by birds, out of man-made materials including cars, missiles, buses and tanks and other detritus of the human population. Our materialist and capitalist society tells us that if it is economical and convenient enough, then it is permissible to destroy nature and wipe out natural habitats. Will nature&#8217;s environmental refugees continue to face extinction, or, as this structure proposes, will they innovate in their adaptation to survive in this world that is changing faster than ever?</p>
<p class="MsoNormal">Birds are known to be incredibly capable of adapting to adverse environments. They have continued to evolve in human habitats (or habitats that men have taken over) and have become stronger. Bower birds recognize plastic and metal scraps and decorate their nests with bottle caps, straws and other trash thrown away by people.<span>  </span>Many species have adapted their wings to maneuver through tall skyscrapers and they have become comfortable dwelling within the human-made architectural spaces. They are becoming like us. Male Lyre birds imitate the sounds of their environment in order to attract a mate, even if those sounds include man-made noises such as sounds of camera shutters, car alarms, or the high-powered chain saws of foresters intent on destroying their habitat of trees.</p>
<p class="MsoNormal">What next? If they learn to flock in bigger colonies and learn to use heavier materials for building their nests, being the excellent architects they already are, what could limit them? To imagine birds building skyscrapers out of humanity&#8217;s disposable culture seems laughable. But history is full of ideas and inventions that sounded ridiculous at the moment. Who would have imagined thousands of years ago, when people used to live in huts built of mud and straw, that one day, there would be towering skyscrapers filling the sky? Just as mankind started constructing taller buildings to accommodate the growing population and crowded living conditions, birds, the master builders, will soon need to implement a new typology of nesting as their survival mechanism. As they are losing surface area, birds will need to start extending vertically for higher density. In fact, it is their very anatomic design which defies gravity, that allows them to reside in vertical structures better than human beings, who were designed to circulate merely on two dimensions.</p>
<p class="MsoNormal">The evolved skyscraping nests will emerge in a few selective areas where birds still recognize as their habitats. An ideal place for the avicular colonies to build their first structures would be the demilitarized zones, where wildlife is unintentionally reserved. There is a long stretch of this DMZ in Korea, the Korean Demilitarized Zone, separating the Korean peninsula in half. Humans have not entered this land for half a century. Unlike the other places in the world, more and more non-human species thrive in the DMZ. It is ironic to see how animals have found their own little Eden in between the war zones. The avicular colony will build an ineffably grand skyscraper and it will be created with piles upon piles of men&#8217;s failed dreams and broken hopes in preserving this earth.</p>
]]></content:encoded>
			<wfw:commentRss>http://crtl-i.com/blog/2009/02/avicular-colonies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
