<?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>nklein software &#187; rt</title>
	<atom:link href="http://nklein.com/tags/rt/feed/" rel="self" type="application/rss+xml" />
	<link>http://nklein.com</link>
	<description>software development and consulting</description>
	<lastBuildDate>Thu, 22 Dec 2011 04:42:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Lisp Package Dependencies</title>
		<link>http://nklein.com/2008/10/lisp-package-dependencies/</link>
		<comments>http://nklein.com/2008/10/lisp-package-dependencies/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 23:36:26 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[rt]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=497</guid>
		<description><![CDATA[Some time back, xach posted information about all of the interdependcies amongst the Lisp packages available on Cliki. He had toyed with a few visualization techniques. Me, I tweaked some old code visualization stuff I had written to output where everything was after it stabilized. Then, I tweaked my ray tracer to read that input [...]]]></description>
			<content:encoded><![CDATA[<p>Some time back, <a href="http://xach.livejournal.com/">xach</a> posted information about all of the <a href="http://xach.livejournal.com/192342.html">interdependcies amongst the Lisp packages</a> available on <a href="http://cliki.net/">Cliki</a>.  He had toyed with a few visualization techniques.</p>
<p>Me, I tweaked some old <a href="http://patrickwonders.livejournal.com/31151.html">code visualization stuff</a> I had written to output where everything was after it stabilized.  Then, I tweaked my <a href="http://patrickwonders.livejournal.com/35210.html">ray tracer</a> to read that input and render the output.</p>
<p><span id="more-497"></span></p>
<p>So, start with <a href="http://www.xach.com/tmp/deps.lisp">Xach&#8217;s dependency listing</a> which is a list of lists.  Each sublist is a package name followed by all of the packages it depends upon.</p>
<p><a href="http://nklein.com/wp-content/uploads/2009/06/cliki.png"><img src="http://nklein.com/wp-content/uploads/2009/06/cliki-150x150.png" alt="cliki" title="cliki" width="150" height="150" class="alignright size-thumbnail wp-image-498" /></a></p>
<p>Plop that in my code visualization stuff.  It creates a node for each package and a spring from package A to package B if package A depends upon package B.  Every node repels every other node.  The springs want to keep nodes one unit apart.  Every node is attracted to the origin.  Damp the motion a bit and eventually it all finds a steady state.  Output where all of the springs and all of the nodes are.</p>
<p>Pull this information into the ray tracer.  Draw red spheres at each node. Draw yellow cylinders for each spring.  Put green bands around the parent&#8217;s end of the spring.  Sit the camera in the thick of it all.  Render it with full 360-degree fish eye.</p>
<p>I&#8217;m not too happy with the color scheme here.  But, I&#8217;m done futzing with it for the time being.</p>
<h3>Top matter sorts of stuff&#8230;</h3>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>require <span style="color: #66cc66;">:</span><span style="color: #555;">asdf</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">operate</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'cl-openmpi <span style="color: #66cc66;">:</span><span style="color: #555;">verbose</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">operate</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'portable-threads <span style="color: #66cc66;">:</span><span style="color: #555;">verbose</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">operate</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'com<span style="color: #66cc66;">.</span>nklein<span style="color: #66cc66;">.</span>rt <span style="color: #66cc66;">:</span><span style="color: #555;">verbose</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>defvar dpd <span style="color: #cc66cc;">5.0</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>defvar spring-color <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defvar band-color <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<h3>Springs and points</h3>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> spring-color-banding <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span>key position<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">plusp</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cos</span> <span style="color: #66cc66;">&#40;</span>coerce <span style="color: #66cc66;">&#40;</span>* <span style="color: #cc66cc;">8.0</span> pi <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">max</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">aref</span> position <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
			  '<span style="color: #66cc66;">&#40;</span>single-<span style="color: #b1b100;">float</span> -<span style="color: #cc66cc;">10000.0</span> <span style="color: #cc66cc;">10000.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      spring-color
      band-color<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> draw-spring <span style="color: #66cc66;">&#40;</span>spring<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>start <span style="color: #66cc66;">&#40;</span>first spring<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>end <span style="color: #66cc66;">&#40;</span>second spring<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">length</span> <span style="color: #66cc66;">&#40;</span>* <span style="color: #cc66cc;">0.5</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">magnitude</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v-</span> start end<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>* <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>+ start end<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-look-at</span> start
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-scaling</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #b1b100;">length</span> <span style="color: #cc66cc;">0.125</span> <span style="color: #cc66cc;">0.125</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">c</span> #'spring-color-banding
				 <span style="color: #66cc66;">:</span><span style="color: #555;">diffuseness</span> <span style="color: #cc66cc;">0.8</span>
				 <span style="color: #66cc66;">:</span><span style="color: #555;">specularity</span> <span style="color: #cc66cc;">0.2</span><span style="color: #66cc66;">&#41;</span>
	      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">cylinder</span> <span style="color: #66cc66;">:</span><span style="color: #555;">round-dimensions</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> draw-point <span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> point
    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-scaling</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.25</span> <span style="color: #cc66cc;">0.25</span> <span style="color: #cc66cc;">0.25</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">c</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">diffuseness</span> <span style="color: #cc66cc;">1.0</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">specularity</span> <span style="color: #cc66cc;">0.1</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">sphere</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<h3>The universe in which these springs sit&#8230;</h3>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> my-universe <span style="color: #66cc66;">&#40;</span>springs points<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">universe</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">spatial-dimensions</span> <span style="color: #cc66cc;">3</span>
		<span style="color: #66cc66;">:</span><span style="color: #555;">color-dimensions</span> <span style="color: #cc66cc;">4</span>
		<span style="color: #66cc66;">:</span><span style="color: #555;">ambient-light</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0.3</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">:</span><span style="color: #555;">sky-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.3</span> <span style="color: #cc66cc;">0.5</span> <span style="color: #cc66cc;">0.9</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">;; put some lights out there</span>
    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> -<span style="color: #cc66cc;">5.0</span> -<span style="color: #cc66cc;">2.0</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">light</span> <span style="color: #66cc66;">:</span><span style="color: #555;">color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">5.0</span> <span style="color: #cc66cc;">4.0</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">light</span> <span style="color: #66cc66;">:</span><span style="color: #555;">color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">;; put the springs and points out there</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">mapc</span> #'draw-spring springs<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">mapc</span> #'draw-point points<span style="color: #66cc66;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">;; put some cameras and a backdrop out there</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>eye-position <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> -<span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.25</span> <span style="color: #cc66cc;">0.75</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>eye-offset <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.25</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>aspect <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>field-of-view <span style="color: #cc66cc;">360.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> eye-position
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-look-at</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>* eye-offset -<span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">camera</span> <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-</span><span style="color: #b1b100;">l</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">aspect</span> aspect
			     <span style="color: #66cc66;">:</span><span style="color: #555;">field-of-view</span> field-of-view<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>* eye-offset <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">camera</span> <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-r</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">aspect</span> aspect
			     <span style="color: #66cc66;">:</span><span style="color: #555;">field-of-view</span> field-of-view<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<h3>Actually rendering the universe&#8230;</h3>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> render-viewpoint <span style="color: #66cc66;">&#40;</span>base-<span style="color: #b1b100;">name</span> extension camera-<span style="color: #b1b100;">name</span> universe<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span>make-pathname <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span>concatenate 'string base-<span style="color: #b1b100;">name</span> extension<span style="color: #66cc66;">&#41;</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">type</span> <span style="color: #ff0000;">&quot;png&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>format t <span style="color: #ff0000;">&quot;NAME: ~A~%&quot;</span> <span style="color: #b1b100;">name</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">render-png</span> <span style="color: #66cc66;">:</span><span style="color: #555;">dots-per-degree</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> dpd dpd<span style="color: #66cc66;">&#41;</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">border</span> <span style="color: #cc66cc;">1</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">border-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">universe</span> universe
		   <span style="color: #66cc66;">:</span><span style="color: #555;">filename</span> <span style="color: #b1b100;">name</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">camera-</span><span style="color: #b1b100;">name</span> camera-<span style="color: #b1b100;">name</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> render-universe <span style="color: #66cc66;">&#40;</span>base-<span style="color: #b1b100;">name</span> universe<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>render-viewpoint base-<span style="color: #b1b100;">name</span> <span style="color: #ff0000;">&quot;-l&quot;</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-</span><span style="color: #b1b100;">l</span> universe<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>render-viewpoint base-<span style="color: #b1b100;">name</span> <span style="color: #ff0000;">&quot;-r&quot;</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-r</span> universe<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> render-files <span style="color: #66cc66;">&#40;</span>files<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-workers</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">dolist</span> <span style="color: #66cc66;">&#40;</span>filename files<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>unwind-protect
	   <span style="color: #66cc66;">&#40;</span>with-open-file <span style="color: #66cc66;">&#40;</span>in filename <span style="color: #66cc66;">:</span><span style="color: #555;">direction</span> <span style="color: #66cc66;">:</span><span style="color: #555;">input</span><span style="color: #66cc66;">&#41;</span>
	     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>springs <span style="color: #66cc66;">&#40;</span>read in <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		   <span style="color: #66cc66;">&#40;</span>points <span style="color: #66cc66;">&#40;</span>read in <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span>pathname-<span style="color: #b1b100;">name</span> filename<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	       <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>uu <span style="color: #66cc66;">&#40;</span>my-universe springs points<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		 <span style="color: #66cc66;">&#40;</span>render-universe <span style="color: #b1b100;">name</span> uu<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>render-files <span style="color: #66cc66;">&#40;</span>rest sb-ext<span style="color: #66cc66;">:</span>*posix-argv*<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>sb-ext<span style="color: #66cc66;">:</span><span style="color: #555;">quit</span><span style="color: #66cc66;">&#41;</span></pre></div>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2008/10/lisp-package-dependencies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First decent images from my new raytracer</title>
		<link>http://nklein.com/2008/09/first-decent-images-from-my-new-raytracer/</link>
		<comments>http://nklein.com/2008/09/first-decent-images-from-my-new-raytracer/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 23:13:40 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[mpi]]></category>
		<category><![CDATA[rt]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=490</guid>
		<description><![CDATA[Some time ago, I wrote an n-dimensional raytracer in C++. It does a fair number of things, none of them efficiently, most of the rigidly. There are a bunch of things that I wanted to do with it for a long time, but it&#8217;s been too slow and rigid to make any of those things [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, I wrote an <a href="http://www.nklein.com/products/rt">n-dimensional raytracer</a> in C++.  It does a fair number of things, none of them efficiently, most of the rigidly.</p>
<p>There are a bunch of things that I wanted to do with it for a long time, but it&#8217;s been too slow and rigid to make any of those things fun.</p>
<p>Enter Lisp.  As soon as it made it through my skull that Lisp is actually compiled (honest-to-goodness your-CPU instructions), I wanted to rewrite the whole thing in Lisp.  I have finally gotten started on doing that.  And, I just made it to the point where I&#8217;m actually tracing rays.  Here is a stereo pair of a three-dimensional scene:</p>
<p><center></p>
<table cellpadding="2" cellspacing="0">
<tr>
<td><a href="http://nklein.com/wp-content/uploads/2009/06/lrt-l.png"><img src="http://nklein.com/wp-content/uploads/2009/06/lrt-l.png" alt="lrt-l" title="lrt-l" width="240" height="135" class="alignnone size-full wp-image-491" /></a></td>
<td><a href="http://nklein.com/wp-content/uploads/2009/06/lrt-r.png"><img src="http://nklein.com/wp-content/uploads/2009/06/lrt-r.png" alt="lrt-r" title="lrt-r" width="240" height="135" class="alignnone size-full wp-image-492" /></a></td>
</tr>
</table>
<p></center></p>
<p><span id="more-490"></span></p>
<p>It use&#8217;s <a href="http://xach.livejournal.com/">xach</a>&#8216;s ZPNG library for output, my OpenMPI library for sharing work across machines, and a thin layer that I wrote on top of Portable Threads for threading within a machine.</p>
<p>It doesn&#8217;t yet do reflections and refractions, directional lights, or most of the shapes that my old raytracer does.<br />
But, it&#8217;s already got multithreading, MPI, more meaningful camera parameters, and functional color characteristics.</p>
<p>So, here&#8217;s the source code that generated the above images. Note that the one sphere has checkboarded diffuseness and the other has gradated phong-exponent and positional coloring.</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> make-checkerboard-func <span style="color: #66cc66;">&#40;</span>a b<span style="color: #66cc66;">&#41;</span>
  #'<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span>amp<span style="color: #808080; font-style: italic;">;key position)</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>sum <span style="color: #66cc66;">&#40;</span>reduce #'+
			 position
			 <span style="color: #66cc66;">:</span><span style="color: #555;">key</span> #'<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>vv<span style="color: #66cc66;">&#41;</span>
				  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span>lt<span style="color: #808080; font-style: italic;">; 1.0 (mod vv 2.0)) 1 0)))))</span>
	<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">evenp</span> sum<span style="color: #66cc66;">&#41;</span> a b<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> my-universe <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">universe</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">spatial-dimensions</span> <span style="color: #cc66cc;">3</span>
		<span style="color: #66cc66;">:</span><span style="color: #555;">color-dimensions</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>look-at <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">18.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>eye-offset <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.25</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>aspect <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">16.0</span> <span style="color: #cc66cc;">9.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>field-of-view <span style="color: #cc66cc;">120.0</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>object-scale <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">3.0</span> <span style="color: #cc66cc;">3.0</span> <span style="color: #cc66cc;">3.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>x-axis <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>y-axis <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">1.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>z-axis <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>angle <span style="color: #cc66cc;">10.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-transforms</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>* eye-offset -<span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">look-at</span> look-at<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">camera</span> <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-</span><span style="color: #b1b100;">l</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">aspect</span> aspect
		   <span style="color: #66cc66;">:</span><span style="color: #555;">field-of-view</span> field-of-view<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-transforms</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span>* eye-offset <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">look-at</span> look-at<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">camera</span> <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-r</span>
		   <span style="color: #66cc66;">:</span><span style="color: #555;">aspect</span> aspect
		   <span style="color: #66cc66;">:</span><span style="color: #555;">field-of-view</span> field-of-view<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> -<span style="color: #cc66cc;">5.0</span> -<span style="color: #cc66cc;">2.0</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">light</span> <span style="color: #66cc66;">:</span><span style="color: #555;">color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> -<span style="color: #cc66cc;">10.0</span> -<span style="color: #cc66cc;">5.0</span> <span style="color: #cc66cc;">8.0</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">light</span> <span style="color: #66cc66;">:</span><span style="color: #555;">color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">0.7</span> <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-transforms</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> look-at
			   <span style="color: #66cc66;">:</span><span style="color: #555;">scaling</span> object-scale
			   <span style="color: #66cc66;">:</span><span style="color: #555;">look-at</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span> -<span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">&#41;</span>
			   <span style="color: #66cc66;">:</span><span style="color: #555;">rotation</span> <span style="color: #66cc66;">&#40;</span>x-axis y-axis angle<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-transforms</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> -<span style="color: #cc66cc;">1.5</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">color-scaling</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.75</span> <span style="color: #cc66cc;">0.75</span> <span style="color: #cc66cc;">0.75</span><span style="color: #66cc66;">&#41;</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">color-rotation</span> <span style="color: #66cc66;">&#40;</span>y-axis z-axis angle<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">c</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.2</span> <span style="color: #cc66cc;">0.8</span> <span style="color: #cc66cc;">0.2</span><span style="color: #66cc66;">&#41;</span>
			       <span style="color: #66cc66;">:</span><span style="color: #555;">diffuseness</span> <span style="color: #66cc66;">&#40;</span>make-checkerboard-func <span style="color: #cc66cc;">0.2</span> <span style="color: #cc66cc;">0.6</span><span style="color: #66cc66;">&#41;</span>
			       <span style="color: #66cc66;">:</span><span style="color: #555;">specularity</span> <span style="color: #cc66cc;">0.4</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">sphere</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-transforms</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">2.0</span> <span style="color: #cc66cc;">2.0</span> <span style="color: #cc66cc;">1.5</span><span style="color: #66cc66;">&#41;</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">scaling</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">1.5</span> <span style="color: #cc66cc;">1.5</span> <span style="color: #cc66cc;">1.5</span><span style="color: #66cc66;">&#41;</span>
			     <span style="color: #66cc66;">:</span><span style="color: #555;">color-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.2</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">c</span> #'<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span>amp<span style="color: #808080; font-style: italic;">;key position)</span>
				   <span style="color: #66cc66;">&#40;</span>map 'vector #'<span style="color: #b1b100;">abs</span> position<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
			       <span style="color: #66cc66;">:</span><span style="color: #555;">diffuseness</span> <span style="color: #cc66cc;">0.6</span>
			       <span style="color: #66cc66;">:</span><span style="color: #555;">specularity</span> <span style="color: #cc66cc;">0.4</span>
			       <span style="color: #66cc66;">:</span><span style="color: #555;">phong-exponent</span> #'<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&amp;</span>amp<span style="color: #808080; font-style: italic;">;key position)</span>
						   <span style="color: #66cc66;">&#40;</span>+ <span style="color: #cc66cc;">10</span>
						      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">abs</span> <span style="color: #66cc66;">&#40;</span>* <span style="color: #cc66cc;">100</span>
							     <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">aref</span> position <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
							     <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">sphere</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-rotation</span> <span style="color: #66cc66;">&#40;</span>x-axis y-axis angle<span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-translation</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> -<span style="color: #cc66cc;">15.0</span> <span style="color: #cc66cc;">0.0</span> <span style="color: #cc66cc;">0.0</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-color</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">c</span> <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">0.8</span> <span style="color: #cc66cc;">0.2</span> <span style="color: #cc66cc;">0.2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	      <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">halfspace</span> <span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">hspace1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
#+<span style="color: #66cc66;">:</span><span style="color: #555;">openmpi</span>
<span style="color: #66cc66;">&#40;</span>mpi<span style="color: #66cc66;">:</span><span style="color: #555;">init</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">with-workers</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>uu <span style="color: #66cc66;">&#40;</span>my-universe<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	 <span style="color: #66cc66;">&#40;</span>dpd <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">v</span> <span style="color: #cc66cc;">2.0</span> <span style="color: #cc66cc;">2.0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">render-png</span> <span style="color: #66cc66;">:</span><span style="color: #555;">dots-per-degree</span> dpd
		    <span style="color: #66cc66;">:</span><span style="color: #555;">universe</span> uu
		    <span style="color: #66cc66;">:</span><span style="color: #555;">filename</span> #P<span style="color: #ff0000;">&quot;output-l.png&quot;</span>
		    <span style="color: #66cc66;">:</span><span style="color: #555;">camera-</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-</span><span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span>rt<span style="color: #66cc66;">:</span><span style="color: #555;">render-png</span> <span style="color: #66cc66;">:</span><span style="color: #555;">dots-per-degree</span> dpd
		    <span style="color: #66cc66;">:</span><span style="color: #555;">universe</span> uu
		    <span style="color: #66cc66;">:</span><span style="color: #555;">filename</span> #P<span style="color: #ff0000;">&quot;output-r.png&quot;</span>
		    <span style="color: #66cc66;">:</span><span style="color: #555;">camera-</span><span style="color: #b1b100;">name</span> <span style="color: #66cc66;">:</span><span style="color: #555;">main-camera-r</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
#+<span style="color: #66cc66;">:</span><span style="color: #555;">openmpi</span>
<span style="color: #66cc66;">&#40;</span>mpi<span style="color: #66cc66;">:</span><span style="color: #555;">finalize</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>And, here are the same images swapped for those of you who prefer cross-eyed stereo pairs:</p>
<p><center></p>
<table cellpadding="2" cellspacing="0">
<tr>
<td><a href="http://nklein.com/wp-content/uploads/2009/06/lrt-r.png"><img src="http://nklein.com/wp-content/uploads/2009/06/lrt-r.png" alt="lrt-r" title="lrt-r" width="240" height="135" class="alignnone size-full wp-image-492" /></a></td>
<td><a href="http://nklein.com/wp-content/uploads/2009/06/lrt-l.png"><img src="http://nklein.com/wp-content/uploads/2009/06/lrt-l.png" alt="lrt-l" title="lrt-l" width="240" height="135" class="alignnone size-full wp-image-491" /></a></td>
</tr>
</table>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2008/09/first-decent-images-from-my-new-raytracer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rt v2.7.2007.05.17</title>
		<link>http://nklein.com/2007/05/rt-v2720070517/</link>
		<comments>http://nklein.com/2007/05/rt-v2720070517/#comments</comments>
		<pubDate>Thu, 17 May 2007 15:45:04 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[New Versions]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[rt]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=321</guid>
		<description><![CDATA[The documentation The source code The feature set now includes: Phong shading, reflection, refraction Functional textures (including textures generated by raytracing other scenes) Cylinders (including spheres and cubes) Quadratic surfaces Regular polytopes Halfspaces Convex hulls of a sets of points Extrusions of lower-dimensional objects Intersections, unions, and complements Different colors for k-dimensional subfacets of convex [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>The <a href='http://nklein.com/wp-content/uploads/2009/05/rt2720070517.pdf'>documentation</a></li>
<li>The <a href='http://nklein.com/wp-content/uploads/2009/05/rt2720070517.tgz'>source code</a></li>
<li>The feature set now includes:
<ul>
<li>Phong shading, reflection, refraction</li>
<li>Functional textures (including textures generated by<br />
	raytracing other scenes)</li>
<li>Cylinders (including spheres and cubes)</li>
<li>Quadratic surfaces</li>
<li>Regular polytopes</li>
<li>Halfspaces</li>
<li>Convex hulls of a sets of points</li>
<li>Extrusions of lower-dimensional objects</li>
<li>Intersections, unions, and complements</li>
<li>Different colors for k-dimensional subfacets<br />
	of convex hulls and coxeter polytopes</li>
</ul>
</li>
<li>Here are some sample images:
<ul>
<li>A stereo pair of slices of <a href="http://nklein.com/wp-content/uploads/2009/05/24.png">some 24-cells</a> along with the <a href="http://nklein.com/wp-content/uploads/2007/05/c24-s.rt">input file</a>.  The vertexes (0-facets) are pink, the edges (1-facets) are dark gray, the faces (2-facets) are yellowish, and the facets (3-facets) are green.</li>
<li>Some <a href="http://nklein.com/wp-content/uploads/2007/05/coxeter.jpg">3-D polytopes</a> with edges and vertexes colored differently and the <a href="http://nklein.com/wp-content/uploads/2007/05/coxeter.rt">input file</a>.</li>
</ul>
</li>
</ul>
<p class="clear">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2007/05/rt-v2720070517/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

