<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Rotation Notation</title>
	<atom:link href="http://gilbazoid.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gilbazoid.wordpress.com</link>
	<description>Computers + Graphics + Math + Art</description>
	<lastBuildDate>Sun, 08 Jan 2012 07:29:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gilbazoid.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Rotation Notation</title>
		<link>http://gilbazoid.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gilbazoid.wordpress.com/osd.xml" title="Rotation Notation" />
	<atom:link rel='hub' href='http://gilbazoid.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Hello GL in Qt/C++</title>
		<link>http://gilbazoid.wordpress.com/2011/10/10/hello/</link>
		<comments>http://gilbazoid.wordpress.com/2011/10/10/hello/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:43:06 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=440</guid>
		<description><![CDATA[This is the fifth post in a series of OpenGL “tutorials” explaining how to get a triangle on your screen using as few lines of code, in as many languages, and on as many platforms as possible. So, as should be apparent from my last two posts, I&#8217;m switching over the front end of my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=440&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>This is the fifth post in a series of OpenGL “tutorials” explaining how to get a triangle on your screen using as few lines of code, in as many languages, and on as many platforms as possible.</em></p>
<p>So, as should be apparent from my last two posts, I&#8217;m switching over the front end of my research system to use the Qt GUI framework.  Naturally, since I&#8217;m trying out a new platform here, I want to post a simple way to get a triangle up on the screen as quickly as possible.</p>
<p><span id="more-440"></span>You can see <a title="Booting up Qt on my Mac" href="http://gilbazoid.wordpress.com/2011/10/09/booting-up-qt-on-my-mac/">my previous post</a> for suggestions on how to get Qt set up on a mac, but since the toolkit is so widely used it should be very straightforward to set it up on windows and linux as well.</p>
<pre class="hl"><span class="hl dir">#include &lt;QApplication&gt;</span>
<span class="hl dir">#include &lt;QtOpenGL&gt;</span>

<span class="hl kwc">class</span> HelloGL <span class="hl sym">:</span> <span class="hl kwc">public</span> QGLWidget
<span class="hl sym">{</span>
<span class="hl kwc">public</span><span class="hl sym">:</span>
    <span class="hl kwd">HelloGL</span><span class="hl sym">(</span>QWidget <span class="hl sym">*</span>parent <span class="hl sym">=</span> NULL<span class="hl sym">) :</span> <span class="hl kwd">QGLWidget</span><span class="hl sym">(</span>parent<span class="hl sym">) {}</span>
    <span class="hl sym">~</span><span class="hl kwd">HelloGL</span><span class="hl sym">() {}</span>
<span class="hl kwc">protected</span><span class="hl sym">:</span>
    <span class="hl kwb">void</span> <span class="hl kwd">initializeGL</span><span class="hl sym">() {</span>
        <span class="hl kwd">glClearColor</span><span class="hl sym">(</span><span class="hl num">0</span><span class="hl sym">,</span> <span class="hl num">0</span><span class="hl sym">,</span> <span class="hl num">0</span><span class="hl sym">,</span> <span class="hl num">0</span><span class="hl sym">);</span>
    <span class="hl sym">}</span>
    <span class="hl kwb">void</span> <span class="hl kwd">resizeGL</span><span class="hl sym">(</span><span class="hl kwb">int</span> w<span class="hl sym">,</span> <span class="hl kwb">int</span> h<span class="hl sym">) {</span>
        <span class="hl kwd">glViewport</span><span class="hl sym">(</span><span class="hl num">0</span><span class="hl sym">,</span><span class="hl num">0</span><span class="hl sym">,</span>w<span class="hl sym">,</span>h<span class="hl sym">);</span>
        <span class="hl kwd">glMatrixMode</span><span class="hl sym">(</span>GL_PROJECTION<span class="hl sym">);</span>
        <span class="hl kwd">glLoadIdentity</span><span class="hl sym">();</span>
        <span class="hl kwb">double</span> aspect <span class="hl sym">=</span> <span class="hl kwb">double</span><span class="hl sym">(</span>w<span class="hl sym">) /</span> <span class="hl kwb">double</span><span class="hl sym">(</span>h<span class="hl sym">);</span>
        <span class="hl kwd">gluOrtho2D</span><span class="hl sym">(-</span>aspect<span class="hl sym">,</span> aspect<span class="hl sym">, -</span><span class="hl num">1.0</span><span class="hl sym">,</span> <span class="hl num">1.0</span><span class="hl sym">);</span>
        <span class="hl kwd">glMatrixMode</span><span class="hl sym">(</span>GL_MODELVIEW<span class="hl sym">);</span>
        <span class="hl kwd">glLoadIdentity</span><span class="hl sym">();</span>
    <span class="hl sym">}</span>
    <span class="hl kwb">void</span> <span class="hl kwd">paintGL</span><span class="hl sym">() {</span>
        <span class="hl kwd">glClear</span><span class="hl sym">(</span>GL_COLOR_BUFFER_BIT<span class="hl sym">);</span>
        <span class="hl kwd">glColor3f</span><span class="hl sym">(</span><span class="hl num">1.0</span><span class="hl sym">,</span><span class="hl num">1.0</span><span class="hl sym">,</span><span class="hl num">1.0</span><span class="hl sym">);</span>
        <span class="hl kwd">glBegin</span><span class="hl sym">(</span>GL_TRIANGLES<span class="hl sym">);</span>
            <span class="hl kwd">glVertex3f</span><span class="hl sym">(-</span><span class="hl num">0.5</span><span class="hl sym">,-</span><span class="hl num">0.5</span><span class="hl sym">,</span><span class="hl num">1.0</span><span class="hl sym">);</span>
            <span class="hl kwd">glVertex3f</span><span class="hl sym">(</span> <span class="hl num">0.5</span><span class="hl sym">,-</span><span class="hl num">0.5</span><span class="hl sym">,</span><span class="hl num">1.0</span><span class="hl sym">);</span>
            <span class="hl kwd">glVertex3f</span><span class="hl sym">(-</span><span class="hl num">0.5</span><span class="hl sym">,</span> <span class="hl num">0.5</span><span class="hl sym">,</span><span class="hl num">1.0</span><span class="hl sym">);</span>
        <span class="hl kwd">glEnd</span><span class="hl sym">();</span>
    <span class="hl sym">}</span>
    <span class="hl slc">//void mousePressEvent(QMouseEvent *event);</span>
    <span class="hl slc">//void mouseMoveEvent(QMouseEvent *event);</span>
    <span class="hl slc">//void keyPressEvent(QKeyEvent *event);</span>
<span class="hl sym">};</span>

<span class="hl kwb">int</span> <span class="hl kwd">main</span><span class="hl sym">(</span><span class="hl kwb">int</span> argc<span class="hl sym">,</span> <span class="hl kwb">char</span> <span class="hl sym">*</span>argv<span class="hl sym">[])</span>
<span class="hl sym">{</span>
    QApplication <span class="hl kwd">app</span><span class="hl sym">(</span>argc<span class="hl sym">,</span> argv<span class="hl sym">);</span>

    HelloGL window<span class="hl sym">;</span>
    window<span class="hl sym">.</span><span class="hl kwd">resize</span><span class="hl sym">(</span><span class="hl num">500</span><span class="hl sym">,</span><span class="hl num">500</span><span class="hl sym">);</span>
    window<span class="hl sym">.</span><span class="hl kwd">move</span><span class="hl sym">(</span><span class="hl num">0</span><span class="hl sym">,</span><span class="hl num">0</span><span class="hl sym">);</span>
    window<span class="hl sym">.</span><span class="hl kwd">show</span><span class="hl sym">();</span>

    <span class="hl kwa">return</span> app<span class="hl sym">.</span><span class="hl kwd">exec</span><span class="hl sym">();</span>
<span class="hl sym">}</span></pre>
<p>I went ahead and filled in a full resize stub implementation here, just for the sake of robustness.  I also left some comments suggesting where you want to hook in to capture some of the input.  Of course, there are many more places to capture input, but this is enough to get some basic click and drag camera manipulation implemented.</p>
<p>The really nice thing about the above code, which isn&#8217;t obvious unless you&#8217;ve used Qt, is that the <span class="Apple-style-span" style="font-family:Consolas, Monaco, monospace;font-size:12px;line-height:18px;white-space:pre;">HelloGL</span> object is just a <span class="Apple-style-span" style="font-family:Consolas, Monaco, monospace;font-size:12px;line-height:18px;white-space:pre;">QWidget</span>.  That means you can both drop it in as a top level window (as I did in the above code), or place it into a widget layout inside another window.  This makes it super easy to start adding some basic GUI buttons, checkboxes, sliders etc. (the reason you&#8217;d be using Qt in the first place)</p>
<p>I also hear there&#8217;s a way to get floating widgets over the viewport, but that turned out to be a rathole that just wasted a lot of my afternoon.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/440/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/440/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=440&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2011/10/10/hello/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>Booting up Qt on my Mac</title>
		<link>http://gilbazoid.wordpress.com/2011/10/09/booting-up-qt-on-my-mac/</link>
		<comments>http://gilbazoid.wordpress.com/2011/10/09/booting-up-qt-on-my-mac/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 22:16:41 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=437</guid>
		<description><![CDATA[This is just a quick note on how to get up and running really fast with Qt on a mac. Go ahead and download the installer from the Qt site. Install Qt and note where you created the QtSDK directory Add /&#8230;/QtSDK/desktop/&#8230;/bin to your shell path.  (This ensures qmake is on the path among other [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=437&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is just a quick note on how to get up and running really fast with Qt on a mac.</p>
<ol>
<li>Go ahead and <a href="http://qt.nokia.com/downloads">download the installer</a> from the Qt site.</li>
<li>Install Qt and note where you created the QtSDK directory</li>
<li>Add /&#8230;/QtSDK/desktop/&#8230;/bin to your shell path.  (This ensures qmake is on the path among other things)</li>
</ol>
<p>That&#8217;s it.  I found a reasonable tutorial <a href="http://zetcode.com/tutorials/qt4tutorial/">here</a>.  BUT, there&#8217;s one more slight rub.</p>
<p>If you follow through that tutorial, you&#8217;ll see that Qt prefers you to use their own autotool-like cross platform build system.  This usually involves issuing the three shell commands &#8220;qmake -project&#8221; &#8220;qmake&#8221; and then &#8220;make&#8221; in succession.  However, on mac, doing this will get you an app bundle.  What if you still want to be able to print to standard out and launch the program from the terminal in the normal unix fashion?</p>
<p>This can be fixed by editing the project_name.pro file generated when you issue &#8220;qmake -project&#8221;  Simply add the following line:</p>
<p style="padding-left:30px;">CONFIG-=app_bundle</p>
<p>Then the qmake toolchain will generate a nice normal unix program.  If you want to create an app bundle to distribute, just remove the line, and you&#8217;ll be all set again.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/437/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/437/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=437&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2011/10/09/booting-up-qt-on-my-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>Farewell Immediate Mode GUIs</title>
		<link>http://gilbazoid.wordpress.com/2011/10/09/farewell-immediate-mode-guis/</link>
		<comments>http://gilbazoid.wordpress.com/2011/10/09/farewell-immediate-mode-guis/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 21:56:18 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=425</guid>
		<description><![CDATA[I just decided to try switching over the front end of my project to Qt.  I was trying to make an immediate mode GUI before, but it turns out that&#8217;s actually a terrible idea.  There&#8217;s a couple of reasons why: major GUI toolkits have had a lot of people, time, and attention given to them, so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=425&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just decided to try switching over the front end of my project to Qt.  I was trying to make an <a title="Immediate Mode GUIs" href="http://gilbazoid.wordpress.com/2010/03/10/immediate-mode-guis/">immediate mode GUI</a> before, but it turns out that&#8217;s actually a terrible idea.  There&#8217;s a couple of reasons why:</p>
<ol>
<li>major GUI toolkits have had a lot of people, time, and attention given to them, so they have many more features than you could hope to implement on your own.</li>
<li>major GUI toolkits also have a tremendous amount of HCI wisdom and knowledge embedded in them.  If you use a good GUI toolkit, your program will probably be somewhat more usable even if you don&#8217;t know the first thing about usability.</li>
<li>immediate mode GUIs scale poorly to more complicated interfaces.  They don&#8217;t have hierarchical layouts and more complex reactive functionality has to be hand coded.</li>
</ol>
<p>I figured I should throw something up and warn people away from the siren&#8217;s call.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=425&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2011/10/09/farewell-immediate-mode-guis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>Perspective and Cyberspace</title>
		<link>http://gilbazoid.wordpress.com/2011/01/05/perspective-and-cyberspace/</link>
		<comments>http://gilbazoid.wordpress.com/2011/01/05/perspective-and-cyberspace/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 06:26:11 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=321</guid>
		<description><![CDATA[&#8220;Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts&#8230; A graphic representation of data abstracted from banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=321&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts&#8230; A graphic representation of data abstracted from banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, receding&#8230;&#8221; &#8212; <em>William Gibson</em>, Neuromancer (1984)</p>
<p><a href="http://gilbazoid.files.wordpress.com/2011/01/tron.jpg"><img class="aligncenter size-full wp-image-416" title="tron" src="http://gilbazoid.files.wordpress.com/2011/01/tron.jpg?w=460" alt=""   /></a></p>
<p>Is TRON a good depiction of cyberspace, Gibson&#8217;s &#8220;nonspace of the mind&#8221;? I&#8217;m inclined to say no. Space in TRON is very physical and literal. On &#8220;the grid&#8221; time and space have their usual relationship: to get from point A to point B requires an amount of time proportional to the amount of space. There are concrete forms, buildings, hallways, corridors.  TRON looks really cool, but it fails to capture much of the essence of computers, the internet or digital interaction.</p>
<p>The problem is that cyberspace is a misnomer.  Almost every attempt to make our online experience spatial has failed.  Chat rooms are not rooms; online &#8220;stores&#8221; are more like mail-order catalogs; the distance between any two points is the same: a hyperlink.  Despite pervasive use of spatial metaphors, the internet is for all practical purposes simply not a space. Still, the idea of cyberspace persists, an alluring, romantic thought.  What does our massive interconnected network of computers, information, and people look like?  What is its shape, its architecture, its landscape?<span id="more-321"></span></p>
<p style="text-align:center;"><img class="aligncenter" src="http://www.victortimofeev.com/files/2009-2010/dwgsrs_4_t.jpg" alt="" width="500" height="682" /></p>
<p style="text-align:center;"><em>192.128.1.4 [GEOCITIES99]</em> from Victor Timofeev&#8217;s series <a href="http://www.victortimofeev.com/files/2009-2010/index.html">Local Area Networks</a></p>
<p>This <em>artistic</em> question has certainly seen a variety of answers more nuanced than a Disney blockbuster.  Victor Timofeev&#8217;s work (pictured above) is one interesting recent variation.  Timofeev depicts websites as ramshackle structures positioned on an infinitely receding, flat and featureless ground, similar to the one used by the Surrealists.  In both cases, this featureless ground is a cue for mental, not literal space.</p>
<p><a href="http://gilbazoid.files.wordpress.com/2011/01/chirico-melancholyofdeparture-1914-moma.jpg"><img class="aligncenter size-full wp-image-422" title="Chirico-MelancholyOfDeparture-1914-MOMA" src="http://gilbazoid.files.wordpress.com/2011/01/chirico-melancholyofdeparture-1914-moma.jpg?w=460" alt=""   /></a></p>
<p style="text-align:center;"><em>The Melancholy of Departure</em> &#8212; De Chirico, 1914</p>
<p>For me, one of the most tantalizing artistic questions about depicting cyberspace is how to create a spatial representation of something decidedly not spatial to begin with. One clue we might glean from Timofeev and De Chirico is their treatment of perspective. De Chirico intentionally plays with our expectations of perspective in order to better evoke the desired melancholy.  The rising horizon on the right side of the canvas seems depressingly remote, further diminishing the two tiny figures saying their goodbyes.  Meanwhile, Timofeev constructs a ramshackle stack of rooms in order to depict the chaotic personalization and incoherence of Geocities in the early days of the internet.  By arranging the rooms at disparate angles, Timofeev denies us any unifying, central point of perspective, without resorting to flattening out the canvas. In both cases, the results violate our expectations of space, of perspective without going so far as to obliterate it entirely. (as for instance Picasso did)</p>
<p>However, both of these examples rely heavily on a fixed perspective, a fixed viewing point within the scene.  Could we create some kind of interactive exploration of &#8220;the nonspace of the mind&#8221;? How might we manipulate perspective profitably in an interactive environment, or at the very least, in a video?  What conceptual or emotional effect might these manipulations produce?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=321&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2011/01/05/perspective-and-cyberspace/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2011/01/tron.jpg" medium="image">
			<media:title type="html">tron</media:title>
		</media:content>

		<media:content url="http://www.victortimofeev.com/files/2009-2010/dwgsrs_4_t.jpg" medium="image" />

		<media:content url="http://gilbazoid.files.wordpress.com/2011/01/chirico-melancholyofdeparture-1914-moma.jpg" medium="image">
			<media:title type="html">Chirico-MelancholyOfDeparture-1914-MOMA</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;Elementary Eigenvectors&#8221; the orthonormal case</title>
		<link>http://gilbazoid.wordpress.com/2010/06/08/elementary-eigenvectors-the-orthonormal-case/</link>
		<comments>http://gilbazoid.wordpress.com/2010/06/08/elementary-eigenvectors-the-orthonormal-case/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 10:58:05 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=328</guid>
		<description><![CDATA[Ben Blum-Smith asked the question I&#8217;ve been pondering since my last post I’m a little confused… if a real matrix is not symmetric, there is no guarantee of a real eigenvector (e.g. take a 2-d rotation matrix), so what did you mean “I expect that other arguments along similar lines are possible for non-symmetric real [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=328&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ben Blum-Smith asked the question I&#8217;ve been pondering since my last post</p>
<blockquote><p><em>I’m a little confused… if a real matrix is not symmetric, there is no guarantee of a real eigenvector (e.g. take a 2-d rotation matrix), so what did you mean “I expect that other arguments along similar lines are possible for non-symmetric real matrices”?</em></p></blockquote>
<p>As it turns out, I&#8217;ve been spending quite some time repairing my own understanding of linear algebra.  What I should have said is, I expect to find similar arguments for normal matrices.</p>
<p>Normal is a terrible name of course.  Are other matrices weird? non-conformist?<br />
<a href="http://gilbazoid.files.wordpress.com/2010/06/matrix_punk.png"><img class="aligncenter size-full wp-image-346" title="matrix_punk" src="http://gilbazoid.files.wordpress.com/2010/06/matrix_punk.png?w=460" alt=""   /></a><br />
Unfortunately, I haven&#8217;t figured out how to pin down a similarly elementary flavored proof for normal matrices.  Instead, I&#8217;m going to present an argument for another branch of the family tree: (so to speak) orthonormal matrices.</p>
<p>But first, I realized my last post might have jumped in a bit too deep all at once, so I&#8217;m going to try to err the other way and cover some more basic linear algebra this time as well.  Bear with me and let me define orthonormal matrices before I talk about their eigenanalysis.  I&#8217;ll give two definitions and suggest why they&#8217;re equivalent.<br />
<span id="more-328"></span></p>
<p>One standard approach is to think of the columns as vectors in <img src='http://s0.wp.com/latex.php?latex=%5Cmathbb%7BR%7D%5En&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;mathbb{R}^n' title='&#92;mathbb{R}^n' class='latex' />.  For instance, take the vector space <img src='http://s0.wp.com/latex.php?latex=%5Cmathbb%7BR%7D%5E3&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;mathbb{R}^3' title='&#92;mathbb{R}^3' class='latex' />, aka. &#8220;yes, that convenient mathematical model for the space we live in.&#8221; We might have the <img src='http://s0.wp.com/latex.php?latex=3%5Ctimes+3&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='3&#92;times 3' title='3&#92;times 3' class='latex' /> matrix (courtesy wikipedia)<br />
<a href="http://gilbazoid.files.wordpress.com/2010/06/matrix.png"><img class="aligncenter size-full wp-image-341" title="matrix" src="http://gilbazoid.files.wordpress.com/2010/06/matrix.png?w=460" alt=""   /></a> We say a square matrix like this is orthonormal when the column vectors are all length <img src='http://s0.wp.com/latex.php?latex=1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='1' title='1' class='latex' /> and are pairwise orthogonal.  More symbolically, for every column vector <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=%7Cx%7C%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|x|=1' title='|x|=1' class='latex' /> (equivalently <img src='http://s0.wp.com/latex.php?latex=x%5Ccdot+x%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x&#92;cdot x=1' title='x&#92;cdot x=1' class='latex' />) and for any two distinct column vectors <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='y' title='y' class='latex' />, their dot product is <img src='http://s0.wp.com/latex.php?latex=x%5Ccdot+y+%3D+0&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x&#92;cdot y = 0' title='x&#92;cdot y = 0' class='latex' />.  This gives a simple computation we can perform to check that the above matrix is in fact orthonormal.</p>
<p>But, I&#8217;m a graphics person, so let&#8217;s make a picture.  I&#8217;ll go ahead and plot the three column vectors (labeled <img src='http://s0.wp.com/latex.php?latex=V1%2C+V2%2C+V3&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='V1, V2, V3' title='V1, V2, V3' class='latex' />) relative to the standard basis vectors <img src='http://s0.wp.com/latex.php?latex=X%3D%281%2C0%2C0%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='X=(1,0,0)' title='X=(1,0,0)' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=Y%3D%280%2C1%2C0%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Y=(0,1,0)' title='Y=(0,1,0)' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=Z%3D%280%2C0%2C1%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Z=(0,0,1)' title='Z=(0,0,1)' class='latex' />.</p>
<p><a href="http://gilbazoid.files.wordpress.com/2010/06/axes.png"><img class="aligncenter size-medium wp-image-356" title="axes" src="http://gilbazoid.files.wordpress.com/2010/06/axes.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>As you can see, the column vectors appear to be unit length and orthogonal to each other.  If we place them in correspondence with the three standard coordinate vectors (axes) then we can think of the column vector basis as a rotated image of the standard basis.  That is, our matrix is encoding a rotation transformation.  This is how we get our second definition of an orthonormal matrix.</p>
<p>If we want the effect of multiplying by an orthonormal matrix to be a &#8220;rotation&#8221; (whatever that means in <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n' title='n' class='latex' />-dimensional space) then it should probably have the following properties. (A) transforming a vector shouldn&#8217;t change its length and (B) if two vectors are orthogonal before transforming them with our matrix, then they better remain orthogonal after transforming them.  These two conditions translate to the following properties</p>
<blockquote>
<ul>
<li>For all vectors <img src='http://s0.wp.com/latex.php?latex=x%5Cin%5Cmathbb%7BR%7D%5En&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x&#92;in&#92;mathbb{R}^n' title='x&#92;in&#92;mathbb{R}^n' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=%28Ax%29%5Ccdot%28Ax%29%3Dx%5Ccdot+x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(Ax)&#92;cdot(Ax)=x&#92;cdot x' title='(Ax)&#92;cdot(Ax)=x&#92;cdot x' class='latex' /></li>
<li>For all vectors <img src='http://s0.wp.com/latex.php?latex=x%2Cy%5Cin%5Cmathbb%7BR%7D%5En&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x,y&#92;in&#92;mathbb{R}^n' title='x,y&#92;in&#92;mathbb{R}^n' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=%28Ax%29%5Ccdot%28Ay%29%3Dx%5Ccdot+y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(Ax)&#92;cdot(Ay)=x&#92;cdot y' title='(Ax)&#92;cdot(Ay)=x&#92;cdot y' class='latex' /></li>
</ul>
</blockquote>
<p>In fact, we can now see that the first condition is a special case of the second.  We can express the second condition in a more algebraic sounding way with the phrase &#8220;an orthonormal transformation is a transformation that preserves the dot product.&#8221;  We can get an even nicer algebraic characterization if we do a little symbol pushing.</p>
<blockquote><p><img src='http://s0.wp.com/latex.php?latex=%28Ax%29%5Ccdot+%28Ay%29+%3D+%28Ax%29%5ET+Ay+%3D+x%5ET+A%5ET+A+y+%3D+x%5ET+y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(Ax)&#92;cdot (Ay) = (Ax)^T Ay = x^T A^T A y = x^T y' title='(Ax)&#92;cdot (Ay) = (Ax)^T Ay = x^T A^T A y = x^T y' class='latex' /></p></blockquote>
<p>Now, the only way that the rightmost equality is gong to hold is if we can just remove <img src='http://s0.wp.com/latex.php?latex=A%5ET+A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T A' title='A^T A' class='latex' /> from the middle.  But we can do this precisely when <img src='http://s0.wp.com/latex.php?latex=A%5ET+A%3DI&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T A=I' title='A^T A=I' class='latex' /> the identity matrix.  Aha.  That&#8217;s a great definition, now we don&#8217;t have to talk about column vectors or any sort of vectors whatsoever.  Slick!</p>
<p>(It turns out that you can get the equation <img src='http://s0.wp.com/latex.php?latex=A%5ET+A%3DI&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T A=I' title='A^T A=I' class='latex' /> for orthonormal matrices from the first definition I gave too.  The trick is to realize that the <img src='http://s0.wp.com/latex.php?latex=i%2Cj&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='i,j' title='i,j' class='latex' /> entry of the matrix product <img src='http://s0.wp.com/latex.php?latex=A%5ET+A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T A' title='A^T A' class='latex' /> encodes the dot product between the <img src='http://s0.wp.com/latex.php?latex=i&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='i' title='i' class='latex' />th and <img src='http://s0.wp.com/latex.php?latex=j&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='j' title='j' class='latex' />th column vectors.)</p>
<p>OK, now that we&#8217;re all chummy with orthonormal matrices, I want to state the key theorem for their eigenanalysis.</p>
<blockquote><p><em><strong>Theorem:</strong> Given an <img src='http://s0.wp.com/latex.php?latex=n%5Ctimes+n&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n&#92;times n' title='n&#92;times n' class='latex' /> orthonormal matrix <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />, (<img src='http://s0.wp.com/latex.php?latex=n%5Cgeq+2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n&#92;geq 2' title='n&#92;geq 2' class='latex' />) there exists a two dimensional subspace of <img src='http://s0.wp.com/latex.php?latex=%5Cmathbb%7BR%7D%5En&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;mathbb{R}^n' title='&#92;mathbb{R}^n' class='latex' /> &#8220;fixed&#8221; by <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />.  In other words, there exist vectors <img src='http://s0.wp.com/latex.php?latex=v_1%2Cv_2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v_1,v_2' title='v_1,v_2' class='latex' /> so that for any linear combination <img src='http://s0.wp.com/latex.php?latex=x%3D%5Calpha+v_1+%2B+%5Cbeta+v_2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x=&#92;alpha v_1 + &#92;beta v_2' title='x=&#92;alpha v_1 + &#92;beta v_2' class='latex' />, the vector <img src='http://s0.wp.com/latex.php?latex=Ax&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Ax' title='Ax' class='latex' /> is also a linear combination of <img src='http://s0.wp.com/latex.php?latex=v_1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v_1' title='v_1' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=v_2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v_2' title='v_2' class='latex' />.</em></p></blockquote>
<p>Since we defined an orthonormal transformation to preserve length, this means we can think of <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />&#8216;s effect or action on the subspace <img src='http://s0.wp.com/latex.php?latex=Span%5C%7Bv_1%2Cv_2%5C%7D&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Span&#92;{v_1,v_2&#92;}' title='Span&#92;{v_1,v_2&#92;}' class='latex' /> as a rotation.  Combined with some other (simpler) theorems, we can arrive at the punch line of orthonormal eigenanalysis:</p>
<blockquote><p>Every <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n' title='n' class='latex' />-dimensional rotation factors into a series of independent <img src='http://s0.wp.com/latex.php?latex=2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='2' title='2' class='latex' />-dimensional rotations.</p></blockquote>
<p>This is a fascinating geometric fact, but it&#8217;s usually buried behind this mess about &#8220;complex eigenvalues.&#8221;  Continuing my theme, you don&#8217;t need complex numbers, polynomials or lagrange multipliers to prove this theorem.</p>
<p><strong>proof:</strong><br />
To start, why don&#8217;t we just leverage our previous result about symmetric matrices.  In order to do this, we have to &#8220;symmetrize&#8221; our orthonormal matrix: <img src='http://s0.wp.com/latex.php?latex=S%3DA+%2B+A%5ET&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='S=A + A^T' title='S=A + A^T' class='latex' />.  Since <img src='http://s0.wp.com/latex.php?latex=S&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='S' title='S' class='latex' /> is symmetric, we know that it must have some maximal eigenvalue <img src='http://s0.wp.com/latex.php?latex=%5Clambda&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;lambda' title='&#92;lambda' class='latex' /> and eigenvector <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> so that</p>
<blockquote><p><img src='http://s0.wp.com/latex.php?latex=%5Clambda+x+%3D+Sx+%3D+%28A%2BA%5ET%29x%3DAx+%2B+A%5ET+x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;lambda x = Sx = (A+A^T)x=Ax + A^T x' title='&#92;lambda x = Sx = (A+A^T)x=Ax + A^T x' class='latex' /></p></blockquote>
<p>This tells us that the three vectors <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=Ax&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Ax' title='Ax' class='latex' />, and <img src='http://s0.wp.com/latex.php?latex=A%5ET+x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T x' title='A^T x' class='latex' /> are linearly dependent.  Geometrically, they all lie in the same plane.  However, we really want to focus on <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />, not <img src='http://s0.wp.com/latex.php?latex=A%5ET&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T' title='A^T' class='latex' />, so let&#8217;s go ahead and &#8220;rotate&#8221; this arrangement of three vectors by <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />:</p>
<blockquote><p><img src='http://s0.wp.com/latex.php?latex=%5Clambda+Ax+%3D+AAx+%2B+AA%5ET+x+%3D+AAx+%2B+x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;lambda Ax = AAx + AA^T x = AAx + x' title='&#92;lambda Ax = AAx + AA^T x = AAx + x' class='latex' /></p></blockquote>
<p>(You can check that <img src='http://s0.wp.com/latex.php?latex=A%5ET+A%3DI&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A^T A=I' title='A^T A=I' class='latex' /> if and only if <img src='http://s0.wp.com/latex.php?latex=A+A%5ET+%3D+I&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A A^T = I' title='A A^T = I' class='latex' />, but I&#8217;ll just assume that&#8217;s already been proven here.  You may also want to note that this is the key point at which we invoke orthonormality.)  Squint, and you should see that this equation tells us that if we keep rotating <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> by <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />, then we start becoming linearly dependent after the second rotation.  We just need to dot our &#8216;i&#8217;s and cross our &#8216;t&#8217;s now.</p>
<p>Let <img src='http://s0.wp.com/latex.php?latex=v_1+%3D+x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v_1 = x' title='v_1 = x' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=v_2+%3D+Ax&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v_2 = Ax' title='v_2 = Ax' class='latex' />.  Then,</p>
<p><img src='http://s0.wp.com/latex.php?latex=A%28%5Calpha+v_1+%2B+%5Cbeta+v_2%29+%3D+%5Calpha+Ax+%2B+%5Cbeta+AAx+%3D+%5Calpha+Ax+%2B+%5Cbeta%5Clambda+Ax+-+%5Cbeta+x+%3D+%28-%5Cbeta%29+v_1+%2B+%28%5Calpha+%2B+%5Cbeta%5Clambda%29+v_2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A(&#92;alpha v_1 + &#92;beta v_2) = &#92;alpha Ax + &#92;beta AAx = &#92;alpha Ax + &#92;beta&#92;lambda Ax - &#92;beta x = (-&#92;beta) v_1 + (&#92;alpha + &#92;beta&#92;lambda) v_2' title='A(&#92;alpha v_1 + &#92;beta v_2) = &#92;alpha Ax + &#92;beta AAx = &#92;alpha Ax + &#92;beta&#92;lambda Ax - &#92;beta x = (-&#92;beta) v_1 + (&#92;alpha + &#92;beta&#92;lambda) v_2' class='latex' /></p>
<p>There is obviously a lot more to be said about the consequences of this theorem for <img src='http://s0.wp.com/latex.php?latex=2&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='2' title='2' class='latex' />, <img src='http://s0.wp.com/latex.php?latex=3&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='3' title='3' class='latex' />, and <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n' title='n' class='latex' /> dimensional rotations, but I&#8217;ve already said more than enough for a single post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/328/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=328&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/06/08/elementary-eigenvectors-the-orthonormal-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2010/06/matrix_punk.png" medium="image">
			<media:title type="html">matrix_punk</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2010/06/matrix.png" medium="image">
			<media:title type="html">matrix</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2010/06/axes.png?w=300" medium="image">
			<media:title type="html">axes</media:title>
		</media:content>
	</item>
		<item>
		<title>Complex Numbers: The Ricers of Algebra</title>
		<link>http://gilbazoid.wordpress.com/2010/06/05/complex-numbers-the-ricers-of-algebra/</link>
		<comments>http://gilbazoid.wordpress.com/2010/06/05/complex-numbers-the-ricers-of-algebra/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 07:37:28 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=329</guid>
		<description><![CDATA[Shawn Cornally: For those of you that have had complex/imaginary numbers tacked onto your curriculum like an aluminum spoiler on a stock Honda Civic, I really think you should teach the Mandelbrot Set.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=329&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://101studiostreet.com/wordpress/?p=769">Shawn Cornally</a>:</p>
<blockquote><p><em>For those of you that have had complex/imaginary numbers tacked onto your curriculum <strong>like an aluminum spoiler on a stock Honda Civic</strong>, I really think you should teach the Mandelbrot Set.</em></p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/329/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=329&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/06/05/complex-numbers-the-ricers-of-algebra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>An elementary proof that eigenvectors exist</title>
		<link>http://gilbazoid.wordpress.com/2010/03/31/an-elementary-proof-that-eigenvectors-exist/</link>
		<comments>http://gilbazoid.wordpress.com/2010/03/31/an-elementary-proof-that-eigenvectors-exist/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 09:15:11 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=303</guid>
		<description><![CDATA[I&#8217;m a firm believer that if you can&#8217;t understand some concept without resorting to complex numbers and invoking the fundamental theorem of algebra, then you don&#8217;t have a deep understanding of the concept.  This is particularly a problem for teaching undergraduate mathematics (particularly to scientists and engineers), since some of the most crucial techniques—eigenanalysis and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=303&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a firm believer that if you can&#8217;t understand some concept without resorting to complex numbers and invoking the fundamental theorem of algebra, then you don&#8217;t have a deep understanding of the concept.  This is particularly a problem for teaching undergraduate mathematics (particularly to scientists and engineers), since some of the most crucial techniques—eigenanalysis and Fourier transforms—make heavy use of complex numbers.  The result of the &#8220;complex&#8221; arguments presented is that most students have a very difficult time with these subjects.  Ultimately, many treat them as magical tools that are hardly worth the time invested to understand.</p>
<p>Such a perspective is of course hogwash.</p>
<p>I know for a fact that a much more geometric (and in my opinion illuminating) interpretation of eigenanalysis is possible.  However, I had never seen a clear exposition from first principles that one could reasonably expect to present in a beginning linear algebra course.  Every explanation of the geometric perspective that I&#8217;ve seen has been post-hoc or relied on machinery like Lagrange multipliers—an unwelcome diversion.</p>
<p>I would not be surprised if someone else has come up with this proof before.  However, I was not able to quickly find a reference for it.  It makes no appeals to (a) the characteristic polynomial, (b) matrix polynomials (c) complex numbers or (d) Lagrange multipliers.  I have only treated the real-symmetric case, although I expect that other arguments along similar lines are possible for non-symmetric real matrices.<span id="more-303"></span></p>
<blockquote><p><strong>Theorem:</strong> Let <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' /> be an <img src='http://s0.wp.com/latex.php?latex=n%5Ctimes+n&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='n&#92;times n' title='n&#92;times n' class='latex' /> real symmetric matrix.  Then there exists an eigenvector <img src='http://s0.wp.com/latex.php?latex=v&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v' title='v' class='latex' /> with eigenvalue <img src='http://s0.wp.com/latex.php?latex=%5Clambda&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;lambda' title='&#92;lambda' class='latex' />.  In other words, <img src='http://s0.wp.com/latex.php?latex=Av+%3D+%5Clambda+v&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Av = &#92;lambda v' title='Av = &#92;lambda v' class='latex' />.</p></blockquote>
<p><strong>the proof:</strong></p>
<p>We will hinge this discussion on the maximization of a function <img src='http://s0.wp.com/latex.php?latex=F_A%28x%2Cy%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A(x,y)' title='F_A(x,y)' class='latex' />, constructed from the matrix <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />.  Let <img src='http://s0.wp.com/latex.php?latex=F_A%28x%2Cy%29%3Dx%5Ccdot+Ay&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A(x,y)=x&#92;cdot Ay' title='F_A(x,y)=x&#92;cdot Ay' class='latex' /> be a real-valued function defined on input vectors <img src='http://s0.wp.com/latex.php?latex=x%2C+y%5Cin%5Cmathbb%7BR%7D%5En&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x, y&#92;in&#92;mathbb{R}^n' title='x, y&#92;in&#92;mathbb{R}^n' class='latex' /> constrained to lie on the unit sphere.  In other words, we impose the constraint <img src='http://s0.wp.com/latex.php?latex=%7Cx%7C%3D%7Cy%7C%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|x|=|y|=1' title='|x|=|y|=1' class='latex' />.  To begin with, we note that the function <img src='http://s0.wp.com/latex.php?latex=F_A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A' title='F_A' class='latex' /> is continuous and defined everywhere on the unit sphere.  Since the sphere is a bounded domain, <img src='http://s0.wp.com/latex.php?latex=F_A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A' title='F_A' class='latex' /> must attain a maximum for some pair of unit vectors <img src='http://s0.wp.com/latex.php?latex=%28x%2Cy%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(x,y)' title='(x,y)' class='latex' />.</p>
<p>Now, I claim that if <img src='http://s0.wp.com/latex.php?latex=%28x%2Cy%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(x,y)' title='(x,y)' class='latex' /> is a maximal pair, then <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> must lie collinear with <img src='http://s0.wp.com/latex.php?latex=Ay&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Ay' title='Ay' class='latex' />.  To see why, rewrite the dot product defining <img src='http://s0.wp.com/latex.php?latex=F_A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A' title='F_A' class='latex' /> as <img src='http://s0.wp.com/latex.php?latex=x%5Ccdot+Ay+%3D+%7Cx%7C%7CAy%7C%5Ccos%5Ctheta&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x&#92;cdot Ay = |x||Ay|&#92;cos&#92;theta' title='x&#92;cdot Ay = |x||Ay|&#92;cos&#92;theta' class='latex' />. Since <img src='http://s0.wp.com/latex.php?latex=%7Cx%7C%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|x|=1' title='|x|=1' class='latex' />, we may independently maximize the other two terms <img src='http://s0.wp.com/latex.php?latex=%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|Ay|' title='|Ay|' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=%5Ccos%5Ctheta&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;cos&#92;theta' title='&#92;cos&#92;theta' class='latex' />.  Once a <img src='http://s0.wp.com/latex.php?latex=y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='y' title='y' class='latex' /> maximizing <img src='http://s0.wp.com/latex.php?latex=%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|Ay|' title='|Ay|' class='latex' /> is chosen, <img src='http://s0.wp.com/latex.php?latex=%5Ccos%5Ctheta&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;cos&#92;theta' title='&#92;cos&#92;theta' class='latex' /> is optimized to be <img src='http://s0.wp.com/latex.php?latex=1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='1' title='1' class='latex' /> by choosing <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> collinear with <img src='http://s0.wp.com/latex.php?latex=%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|Ay|' title='|Ay|' class='latex' />.  This gives us the identity <img src='http://s0.wp.com/latex.php?latex=x+%3D+Ay+%2F+%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x = Ay / |Ay|' title='x = Ay / |Ay|' class='latex' />.</p>
<p>Now, since our matrix <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' /> is symmetric, <img src='http://s0.wp.com/latex.php?latex=%28y%2Cx%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(y,x)' title='(y,x)' class='latex' /> must also be a maximal pair, since <img src='http://s0.wp.com/latex.php?latex=F_A%28x%2Cy%29+%3D+x%5Ccdot+Ay+%3D+y%5Ccdot+Ax+%3D+F_A%28y%2Cx%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A(x,y) = x&#92;cdot Ay = y&#92;cdot Ax = F_A(y,x)' title='F_A(x,y) = x&#92;cdot Ay = y&#92;cdot Ax = F_A(y,x)' class='latex' />.  This gives us the identity <img src='http://s0.wp.com/latex.php?latex=y+%3D+Ax+%2F+%7CAx%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='y = Ax / |Ax|' title='y = Ax / |Ax|' class='latex' />.  In general, symmetry usually makes it possible to swap <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='y' title='y' class='latex' />.</p>
<p>Now, before we get to the finale, I&#8217;d like to take a brief break to reflect on one of our earlier observations.  Recall that <img src='http://s0.wp.com/latex.php?latex=F_A%28x%2Cy%29%3D%7Cx%7C%7CAy%7C%5Ccos%5Ctheta&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A(x,y)=|x||Ay|&#92;cos&#92;theta' title='F_A(x,y)=|x||Ay|&#92;cos&#92;theta' class='latex' />.  In our previous argument we concluded that both <img src='http://s0.wp.com/latex.php?latex=%7Cx%7C%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|x|=1' title='|x|=1' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=%5Ccos%5Ctheta%3D1&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;cos&#92;theta=1' title='&#92;cos&#92;theta=1' class='latex' /> better be true of any maximal pair.  Although we didn&#8217;t note it at the time, this means that <img src='http://s0.wp.com/latex.php?latex=F_A%28x%2Cy%29%3D%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='F_A(x,y)=|Ay|' title='F_A(x,y)=|Ay|' class='latex' /> for our maximal pair <img src='http://s0.wp.com/latex.php?latex=%28x%2Cy%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='(x,y)' title='(x,y)' class='latex' />.  By symmetry, we can then observe that <img src='http://s0.wp.com/latex.php?latex=%7CAy%7C+%3D+F_A%28x%2Cy%29+%3D+F_A%28y%2Cx%29+%3D+%7CAx%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='|Ay| = F_A(x,y) = F_A(y,x) = |Ax|' title='|Ay| = F_A(x,y) = F_A(y,x) = |Ax|' class='latex' />.  That is, <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='x' title='x' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=y&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='y' title='y' class='latex' /> are equally stretched by <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' />.</p>
<p>Finally, we are ready to bring things to a head.  I claim that <img src='http://s0.wp.com/latex.php?latex=v%3Dx%2By&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='v=x+y' title='v=x+y' class='latex' /> is an eigenvector of <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' /> with eigenvalue <img src='http://s0.wp.com/latex.php?latex=%5Clambda+%3D+%7CAx%7C+%3D+%7CAy%7C&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='&#92;lambda = |Ax| = |Ay|' title='&#92;lambda = |Ax| = |Ay|' class='latex' />.</p>
<p><img src='http://s0.wp.com/latex.php?latex=Av+%3D+A%28x%2By%29+%3D+Ax+%2B+Ay+%3D+%7CAx%7Cy+%2B+%7CAy%7Cx+%3D+%5Clambda%28x%2By%29+%3D+%5Clambda+v&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Av = A(x+y) = Ax + Ay = |Ax|y + |Ay|x = &#92;lambda(x+y) = &#92;lambda v' title='Av = A(x+y) = Ax + Ay = |Ax|y + |Ay|x = &#92;lambda(x+y) = &#92;lambda v' class='latex' /></p>
<p><strong>The intuition:</strong></p>
<p>Of course this proof, while rigorous, hardly gets at the appropriate intuition.  Either before or after the preceding proof a teacher would be remiss not to mention that the function <img src='http://s0.wp.com/latex.php?latex=Q_A%28x%29+%3D+F_A%28x%2Cx%29&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='Q_A(x) = F_A(x,x)' title='Q_A(x) = F_A(x,x)' class='latex' /> has elliptical level sets (when the matrix <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=516064&amp;s=0' alt='A' title='A' class='latex' /> is positive definite), and then to give a visual demonstration of what these maxima of the function really are.  They identify the axes of the ellipse—the eigenvectors—while the eigenvalues reflect the radii associated with each axis.</p>
<p>If someone is already familiar with the method of Lagrange multipliers, then the preceding argument can be mostly elided.  However, working around them avoids a major digression into multivariable calculus.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=303&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/03/31/an-elementary-proof-that-eigenvectors-exist/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>Immediate Mode GUIs</title>
		<link>http://gilbazoid.wordpress.com/2010/03/10/immediate-mode-guis/</link>
		<comments>http://gilbazoid.wordpress.com/2010/03/10/immediate-mode-guis/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:42:31 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=283</guid>
		<description><![CDATA[Update: Since writing this post, I&#8217;ve changed my mind and decided against immediate mode GUIs rather strongly.  At this point, I would not advise going down this path, but I&#8217;m going to leave the post here for posterity. I just got this hot link from the c0de517e blog (now on my blogroll): http://mollyrocket.com/861 The video&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=283&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Update: Since writing this post, I&#8217;ve <a title="Farewell Immediate Mode GUIs" href="http://gilbazoid.wordpress.com/2011/10/09/farewell-immediate-mode-guis/">changed my mind</a> and decided against immediate mode GUIs rather strongly.  At this point, I would not advise going down this path, but I&#8217;m going to leave the post here for posterity.</em></p>
<p>I just got this hot link from <a href="http://c0de517e.blogspot.com/2010/03/homework.html">the c0de517e blog</a> (now on my blogroll):</p>
<p><a href="http://mollyrocket.com/861">http://mollyrocket.com/861</a></p>
<p>The video&#8217;s 40 minutes long, so—let&#8217;s be honest—you&#8217;re not going to watch it. I&#8217;ll try to give you my best explanation of what I heard, but I&#8217;ll probably butcher the idea.  However, I&#8217;m planning to try this in my next research project, so maybe I&#8217;ll have some more concrete experiences to write up in the future.</p>
<p><span id="more-283"></span>Ok, here goes. A traditional GUI system, such as TCL/TK, QT, FLTK, Cocoa, Carbon or the Windows GUI system works something like the following: Create a window object.  Then, create widgets (GUI elements/objects e.g. buttons, text-boxes, sliders) which are registered as children of the window.  Keep making more widgets, and organize them in a hierarchy.  Now, Every time you create a widget, you have to do a bunch of things: (a) You have to construct the object in some fashion.  (b) You have to set some parameters. (e.g. button text, position, size) (c) You have to register a callback—code that is invoked when (for example) the button is clicked. (note: I&#8217;ve been using callbacks for drawing the triangle in my <a href="http://gilbazoid.wordpress.com/2010/01/06/hello-gl-in-c/">GLUT/OpenGL triangle series</a>) Finally, (d) you have to tell the widget to display itself.</p>
<p>This is a lot of trouble and code. The rampant use of callbacks ends up fragmenting your UI code across multiple lexical scopes.  It can also introduce <a href="http://gilbazoid.wordpress.com/2009/12/26/teaching-parallelism-and-its-perils/">concurrency issues</a>, since you have no control over when these callbacks get invoked.   Dynamically adapting your GUI to your user&#8217;s behavior (e.g. switching menu screens in a game) is difficult, since UI elements have to be created, destroyed, registered, unregistered, hidden, displayed and so on.  This proliferation of seemingly decoupled widgets can also encourage spreading your GUI code across many different files and modules—which can often be a detriment to understanding.</p>
<p>The key idea of immediate mode GUIs is to centralize all of your GUI code in a single DoGUI() function that gets called every frame.  DoGUI() should work just like Draw() does right now. You, or some system just calls DoGUI() as the first item in your render loop.  Inside of DoGUI(), you call routines like DoButton(). Just like with a DrawTriangle(&#8230;) or DrawLine(&#8230;) function, you pass in the vital data for the button in question, and the DoButton() function returns a boolean telling you whether the button was clicked this frame or not.  Using a simple conditional, you can react to a button push: if(DoButton(&#8230;)) { handle button click }.  DoGUI() is just a list of all the GUI widgets you &#8220;do&#8221;.  It&#8217;s up to you how you choose to organize the data for the widgets.  That data belongs to you and your application, not the GUI library.</p>
<p>This approach makes it really easy to remove or add GUI elements.  At about 22:30 into the video Casey (the Molly Rocket guy in the video) explains, &#8220;I can do culling&#8230; I don&#8217;t have to delete the item, I don&#8217;t have to disable it. I don&#8217;t have to hide it. I just simply don&#8217;t call it that frame. I don&#8217;t have to know how many of these there are. I don&#8217;t have to create [UI elements] for it ahead of time.&#8221;  That&#8217;s really cool. You can basically change the entire GUI from frame to frame without having to fight the GUI toolkit.</p>
<p>Casey makes some more interesting points. This approach integrates well with 3d and components that don&#8217;t know about or care about UI stuff.  Take for example a rendering module/library. Talking about 3d objects, he points out that &#8220;almost always they have some way of doing ray picking. And they can always render themselves. That&#8217;s all you need to turn them into an immediate mode widget.&#8221; So now we can have 3d buttons and interface elements exposed via the same API as our 2d GUI elements.</p>
<p>Something I did not know, but I&#8217;m very glad to know about now:  Speaking about traditional GUIs in modeling/design applications, Casey says &#8220;&#8230;to the point where even in professional 3d applications, often you have two totally separate systems: one for the 2d user interface, one for the 3d user interface. That&#8217;s crap.&#8221; Yes. Yes it is.</p>
<p>Immediate mode GUIs sound like a really good idea for real-time applications in particular (design/games), since you&#8217;re already redrawing every frame. You can do crazy stuff like floating buttons over characters etc.</p>
<p>I haven&#8217;t looked at it, but someone at Nvidia has made an immediate mode GUI library available that they use for their graphics demos:<br />
<a href="http://code.google.com/p/nvidia-widgets/"> http://code.google.com/p/nvidia-widgets/</a></p>
<p>So if you want to try it out, maybe that&#8217;s a good place to start looking.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/283/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=283&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/03/10/immediate-mode-guis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>
	</item>
		<item>
		<title>I3D Day 1: Highlights</title>
		<link>http://gilbazoid.wordpress.com/2010/02/26/i3d-day-1-highlights/</link>
		<comments>http://gilbazoid.wordpress.com/2010/02/26/i3d-day-1-highlights/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 06:43:22 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=248</guid>
		<description><![CDATA[Demetri Terzopoulos gave the opening keynote titled Biomechanical and Artificial Life Simulation of Humans for Computer Animation and Games, after which there were sessions on simulation, animation and GPU techniques. I hadn&#8217;t heard before, but Demetri&#8217;s group recently released this ambitious paper: Comprehensive Biomechanical Modeling and Simulation of the Upper Body Some particularly cool papers [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=248&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Demetri Terzopoulos gave the opening keynote titled <em>Biomechanical and Artificial Life Simulation of Humans for Computer Animation and Games</em>, after which there were sessions on simulation, animation and GPU techniques.</p>
<p>I hadn&#8217;t heard before, but Demetri&#8217;s group recently released this ambitious paper: <a href="http://portal.acm.org/citation.cfm?id=1559755.1559756">Comprehensive Biomechanical Modeling and Simulation of the Upper Body</a></p>
<p>Some particularly cool papers from day 1:</p>
<span style="text-align:center; display: block;"><a href="http://gilbazoid.wordpress.com/2010/02/26/i3d-day-1-highlights/"><img src="http://img.youtube.com/vi/RuZQpWo9Qhs/2.jpg" alt="" /></a></span>
<p><strong>Jonathan Cohen, Sarah Tariq, and Simon Green. <em>Interactive Fluid-Particle Simulation using Translating Eulerian Grids</em>.</strong> <a href="http://www.jcohen.name/">link</a><br />
The talk started with some very useful high level observations and motivation.  Jonathan emphasized that our goal should be scalable physics, not just fast, realistic physics.  Sequential algorithms are insufficient.  Parallel algorithms alone are also insufficient.  We want parallel algorithms that produce better looking results as hardware gets better.  There were some cool ideas here: Use Gallilean invariance to replace translations of the simulation grid with fluctuating boundary conditions (modeling the entrance/exit of matter from the volume).  Apply the fluid simulation to particles with less influence as you move towards the edge of the grid.  This gets around the simulation/fluid in a box problem.  Cool tidbit: They used this technique for jetpacks and one of the guns in the videogame Dark Void.</p>
<p><a href="http://gilbazoid.files.wordpress.com/2010/02/frankenrigs.png"><img src="http://gilbazoid.files.wordpress.com/2010/02/frankenrigs.png?w=450&#038;h=210" alt="" title="frankenrigs" width="450" height="210" class="aligncenter size-medium wp-image-268" /></a></p>
<p><strong>Christian Miller, Okan Arikan and Donald Fussell. <em>Frankenrigs: Building Character Rigs From Multiple Sources</em>.</strong> <a href="http://www.cs.utexas.edu/~ckm/projects/frankenrigs/index.html">link</a><br />
(Full disclosure: I know all of the authors fairly well from my time at UT Austin.)  This is an end-to-end system for (semi-)automatically rigging and skinning character meshes.  I didn&#8217;t know this, but rigging and skinning is tedious for experts and nearly impossible for everyone else.  The idea was to take a data-driven approach and leverage previously skinned and rigged character meshes (of which game and movie studios have plenty lying around).  The input meshes are cut into limbs and then appropriate limbs are matched to the target mesh and stitched together.  Hence the name: Frankenrigs.  One very interesting observation: The method handles non-manifold, non-closed meshes, which is the way almost all artists&#8217; meshes come.  Christian actually ran into this problem when comparing to previous work: He couldn&#8217;t because the past work didn&#8217;t work on non-closed meshes.</p>
<p><strong>Samuli Laine and Tero Karras. <em>Efficient Sparse Voxel Octrees</em>.</strong> <a href="http://www.tml.tkk.fi/~samuli/">link</a><br />
This paper had a really killer demo.  They managed to voxelize and render at reasonably high fidelity the NVIDIA street scene and the Sibenik cathedral scene.  Along with the <a href="http://artis.imag.fr/Publications/2009/CNLE09/">Gigavoxels</a> paper, this makes it look like adaptive resolution voxel grids may be gaining a lot of traction.  The contributions here were mainly an efficient ray marching algorithm, and effectively handling and filtering normals.  The authors have open sourced the <a href="http://code.google.com/p/efficient-sparse-voxel-octrees/">code base</a>, so if you&#8217;re looking to get your hands dirty with some voxel rendering and/or research, this might be a good place to start.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/248/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=248&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/02/26/i3d-day-1-highlights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2010/02/frankenrigs.png?w=300" medium="image">
			<media:title type="html">frankenrigs</media:title>
		</media:content>
	</item>
		<item>
		<title>I3D 2010</title>
		<link>http://gilbazoid.wordpress.com/2010/02/18/i3d-2010/</link>
		<comments>http://gilbazoid.wordpress.com/2010/02/18/i3d-2010/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 06:28:33 +0000</pubDate>
		<dc:creator>Gilbert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gilbazoid.wordpress.com/?p=245</guid>
		<description><![CDATA[I&#8217;m in Washington D.C. this weekend for Interactive 3D (I3D) 2010. I&#8217;ve promised myself to try and blog some comments on the whole affair. Hopefully I&#8217;ll be able to do this every night, but failing that, I&#8217;ll post a summary afterwards. Also, there is a lot of snow here:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=245&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Washington D.C. this weekend for <a href="http://graphics.cs.williams.edu/i3d10/">Interactive 3D (I3D) 2010</a>.  I&#8217;ve promised myself to try and blog some comments on the whole affair.  Hopefully I&#8217;ll be able to do this every night, but failing that, I&#8217;ll post a summary afterwards.</p>
<p>Also, there is a lot of snow here:</p>
<p><a href="http://gilbazoid.files.wordpress.com/2010/02/snow_in_dc.jpg"><img class="aligncenter size-medium wp-image-246" title="snow_in_dc" src="http://gilbazoid.files.wordpress.com/2010/02/snow_in_dc.jpg?w=225&#038;h=300" alt="" width="225" height="300" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gilbazoid.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gilbazoid.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gilbazoid.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gilbazoid.wordpress.com&amp;blog=8809490&amp;post=245&amp;subd=gilbazoid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gilbazoid.wordpress.com/2010/02/18/i3d-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/84218d498717c9aad734e9dc0b57eab3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Gilbert</media:title>
		</media:content>

		<media:content url="http://gilbazoid.files.wordpress.com/2010/02/snow_in_dc.jpg?w=225" medium="image">
			<media:title type="html">snow_in_dc</media:title>
		</media:content>
	</item>
	</channel>
</rss>
