<?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>tinowagner.com // Blog</title>
	<atom:link href="http://blog.tinowagner.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tinowagner.com</link>
	<description>Dies und das.</description>
	<lastBuildDate>Wed, 25 Nov 2009 00:44:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>750 frames of chaos</title>
		<link>http://blog.tinowagner.com/2009/11/25/750-frames-of-chaos/</link>
		<comments>http://blog.tinowagner.com/2009/11/25/750-frames-of-chaos/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:44:06 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Physik]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=76</guid>
		<description><![CDATA[Here&#8217;s a video my graphics card has just finished. It&#8217;s a travel lasting 750 frames from a friction coefficent of 0.05 to 1.0 and my &#8222;standard&#8220; setting of three magnets below the pendulum&#8217;s body (see here and here for more information).

]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a video my graphics card has just finished. It&#8217;s a travel lasting 750 frames from a friction coefficent of 0.05 to 1.0 and my &bdquo;standard&ldquo; setting of three magnets below the pendulum&#8217;s body (see <a href="http://blog.tinowagner.com/2009/11/23/magnetic-pendulum-the-opencl-way/">here</a> and <a href="http://blog.tinowagner.com/2009/07/13/das-magnetpendel/">here</a> for more information).</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/I11gxf3IIb0&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/I11gxf3IIb0&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2009/11/25/750-frames-of-chaos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magnetic pendulum, the OpenCL way.</title>
		<link>http://blog.tinowagner.com/2009/11/23/magnetic-pendulum-the-opencl-way/</link>
		<comments>http://blog.tinowagner.com/2009/11/23/magnetic-pendulum-the-opencl-way/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:48:21 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Physik]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[magnetic pendulum]]></category>
		<category><![CDATA[Magnetpendel]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=70</guid>
		<description><![CDATA[For the last couple of days I did some effort on porting my Python implementation of a magnetic pendulum (German post here, the slides include lots of pictures) to OpenCL. It&#8217;s really cool to leverage GPU power for your own benefit.
If you&#8217;d like to see code rather than words, you should come around at my [...]]]></description>
			<content:encoded><![CDATA[<p>For the last couple of days I did some effort on porting my Python implementation of a <a href="http://www.inf.ethz.ch/personal/muellren/pendulum/index.html">magnetic pendulum</a> (German post <a href="http://blog.tinowagner.com/2009/07/13/das-magnetpendel/">here</a>, the <a href="http://tinowagner.com/projekte/magnetic_pendulum/vortrag_short-web.pdf">slides</a> include lots of pictures) to <a href="http://en.wikipedia.org/wiki/OpenCL">OpenCL</a>. It&#8217;s really cool to leverage <span class="caps">GPU</span> power for your own benefit.</p>
<p>If you&#8217;d like to see code rather than words, you should <a href="http://github.com/tuxu/magnetic_pendulum">come around at my Git repository</a>. Just to quote from the <a href="http://github.com/tuxu/magnetic_pendulum/blob/master/README">README</a> file:</p>
<blockquote><p>
This is an implementation of a magnetic pendulum in OpenCL. A spherical pendulum is influenced by magnets. For every point of origin the program finds the magnet the pendulum&#8217;s body will be nearest when it comes to rest (friction is taken into account). It will create an image, where every pixel (points in the <img src="http://blog.tinowagner.com/wp-content/cache/tex_1ed346930917426bc46d41e22cc525ec.png" align="absmiddle" class="tex" alt="\phi" />-<img src="http://blog.tinowagner.com/wp-content/cache/tex_2554a2bb846cffd697389e5dc8912759.png" align="absmiddle" class="tex" alt="\theta" />-plane) is mapped to a color representing each magnet.</p>
<p>The problem is ideally suited for parallel computing as every initial condition can be solved independently from the others. I did a Python version some time ago that utilized Scipy. Although it was quite optimized with C code, it performed very bad. To create a map of 1600&#215;1600 pixels, it took about 2700 minutes! Leveraging the power hidden in GPUs, I wanted to know what speed-up would be reached.</p>
<p>The code works quite good so far. I began coding a <span class="caps">CPU</span> version in C that is a lot faster than the original Python version, but even my decent <span class="caps">GPU</span> outperforms that by a factor of ten. The map from above can now be done in 284 seconds. That is seconds, not minutes! <img src='http://blog.tinowagner.com/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':-)' class='wp-smiley' /> </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2009/11/23/magnetic-pendulum-the-opencl-way/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asus DH Remote: Crafting an OS X driver</title>
		<link>http://blog.tinowagner.com/2009/11/02/asus-dh-remote-crafting-an-os-x-driver/</link>
		<comments>http://blog.tinowagner.com/2009/11/02/asus-dh-remote-crafting-an-os-x-driver/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 22:23:40 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=57</guid>
		<description><![CDATA[Some ASUS mainboards are supplied with a remote control, the &#8222;Asus DH Remote&#8220;. I&#8217;m running Mac OS X Snow Leopard on a P5W DH Deluxe, which is quite old from a technical point of view, but actually doing a good job. As often, there are only Windows drivers for the remote, but none for Linux [...]]]></description>
			<content:encoded><![CDATA[<p>Some <span class="caps">ASUS</span> mainboards are supplied with a remote control, the <a href="http://www.techspot.com/articles-info/11/images/image_14.jpg">&bdquo;Asus DH Remote&ldquo;</a>. I&#8217;m running <a href="http://en.wikipedia.org/wiki/Mac_OS_X_Snow_Leopard">Mac OS X Snow Leopard</a> on a <a href="http://www.asus.com/product.aspx?P_ID=m4cR4iaPdABNLtQa">P5W DH Deluxe</a>, which is quite old from a technical point of view, but actually doing a good job. As often, there are only Windows drivers for the remote, but none for Linux or even OS X. For the Linux part, there is already a <a href="http://www.lirc.org/html/table.html">driver for LIRC</a>. </p>
<p>When I realized that the IR receiver is a simple <a href="http://en.wikipedia.org/wiki/USB_HID"><span class="caps">USB</span> HID</a> device, I started brewing an OS X user-space utility together that interfaces the receiver. It is merely a hack based off example code I found at the <a href="http://developer.apple.com/mac/library/documentation/DeviceDrivers/Conceptual/HID/intro/intro.html">Mac Dev Center</a>, but that got it to work in a short time.</p>
<p>Basically, what you get from the receiver is the message that a key on the remote was pressed or released. Using this information, the tool is using Brandon Holland&#8217;s <a href="http://www.brandon-holland.com/irkeyboardemu.html">IRKeyboardEmu</a> to emulate <span class="caps">HID</span> command reports sent by an Apple Remote. This allows you to use the Asus DH Remote as a controller for <a href="http://en.wikipedia.org/wiki/Frontrow">FrontRow</a> or iTunes!</p>
<p>It is far from being perfect, but I think it&#8217;s a good starting point for your own inventions.</p>
<p>
<h3>Download</h3>
<p>
Source and Universal Binary: <a href="http://www.tinowagner.com/projekte/asus_remote/AsusRemote-v0.1.zip">AsusRemote-v0.1.zip</a></p>
<p>
<h3>Installation</h3>
<p></p>
<ol></p>
<li>Download and extract the archive.</li>
<p></p>
<li>Install the binary:<br />
<code># sudo cp AsusRemote /usr/local/bin/AsusRemote<br />
# sudo chown root:wheel /usr/local/bin/AsusRemote<br />
# sudo chmod +s /usr/local/bin/AsusRemote<br />
</code><br />
Note the <span class="caps">SUID</span> bit for AsusRemote. It needs superuser rights to interface to IRKeyboardEmu! Else it will issue an error issuing a <em>sysctl</em> command. </li>
<p></p>
<li>To be able to use the daemon right after booting OS X, you need to copy <em>com.tinowagner.AsusRemote.plist</em> to <em>/Library/LaunchDaemons/</em>:<br />
<code># sudo cp com.tinowagner.AsusRemote.plist /Library/LaunchDaemons/<br />
# sudo chown root:wheel /Library/LaunchDaemons/com.tinowagner.AsusRemote.plist<br />
</code>
</li>
<p></p>
<li>Finally, you should <a href="http://www.brandon-holland.com/irkeyboardemu.html">download the newest binary of IRKeyboardEmu</a> and copy it to /System/Library/Extensions. Just follow the instructions in the readme.</li>
<p></p>
<li>After rebooting, check that the daemon is running. There should be a process called AsusRemote.</li>
</ol>
<p>
<h3>Key assignment</h3>
<p>
This is a hard coded part. It tries to match the keys on the Apple Remote.</p>
<ol></p>
<li><strong>AP LAUNCH</strong>: Menu. Start FrontRow.</li>
<p></p>
<li><strong>+ and &#8211; </strong>: Up and down arrows, Volume up/down.</li>
<p></p>
<li><strong>Reverse and Forward</strong>: Previous/Rewind, Next/Fast-forward</li>
<p></p>
<li><strong>Play/Pause</strong>: Enter, Play/Pause</li>
<p>
</ol>
<p>
There is no action assigned to the other keys.</p>
<p>
<h3>Troubleshooting</h3>
<p>
If nothing happens after pressing a key, try running AsusRemote from command line. First kill the daemon running in the background:<br />
<code># sudo killall AsusRemote<br />
# AsusRemote<br />
</code><br />
You should now see a version message. Pressing an arbitrary key on the remote should produce an output:</p>
<blockquote><p>AsusRemote v0.1<br />
2009, (c) Tino Wagner &lt;ich@tinowagner.com&gt;</p>
<p>Key:          Plus<br />
Key:          Minus<br />
Key:          Reverse<br />
Key:          Forward<br />
Key:          Play/Pause<br />
Key pressed:  Plus<br />
Key released: Plus<br />
Key pressed:  Minus<br />
Key released: Minus<br />
Key pressed:  Forward<br />
Key released: Forward<br />
Key pressed:  Reverse<br />
Key released: Reverse<br />
Key:          AP Launch<br />
Key:          AP Launch<br />
^C
</p></blockquote>
<p>
<h3>Notes</h3>
<p>
Feel free to modify the code to your likes! But please drop me a note if it&#8217;s an improvement that could be useful for everybody, so I can post it here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2009/11/02/asus-dh-remote-crafting-an-os-x-driver/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Das Magnetpendel</title>
		<link>http://blog.tinowagner.com/2009/07/13/das-magnetpendel/</link>
		<comments>http://blog.tinowagner.com/2009/07/13/das-magnetpendel/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 18:08:18 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Physik]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Magnetpendel]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=50</guid>
		<description><![CDATA[Als Projektarbeit f&#252;r Computational Physics habe ich ein Magnetpendel programmiert. Geschrieben in Python mit wxWidgets und Pyglet, parallelisiert mit IPython.

Pr&#228;sentation des Projekts: PDF (Kurzfassung, 1 MB), PDF (Langfassung mit weiteren Fraktalen, 14 MB)
Dokumentation: hier
Quelltext


]]></description>
			<content:encoded><![CDATA[<a rel="lightbox" href="http://tinowagner.com/projekte/magnetic_pendulum/screen.jpg"><img title="Screenshot des Magnetpendels" src="http://tinowagner.com/projekte/magnetic_pendulum/screen.jpg" alt="Screenshot des Magnetpendels" width="400" height="248" /></a>
<a rel="lightbox" href="http://tinowagner.com/projekte/magnetic_pendulum/map.png"><img title="Beispiel f&#252;r eine berechnete Karte" src="http://tinowagner.com/projekte/magnetic_pendulum/map.png" alt="Beispiel f&#252;r eine berechnete Karte" width="200" height="200" /></a>
<p>Als Projektarbeit f&#252;r <a title="Computational Physics" href="http://www.comp-phys.tu-dresden.de/cp2009/">Computational Physics</a> habe ich ein <a title="Magnetpendel" href="http://de.wikipedia.org/wiki/Magnetpendel">Magnetpendel</a> programmiert. Geschrieben in Python mit wxWidgets und <a href="http://pyglet.org/">Pyglet</a>, parallelisiert mit <a title="IPython" href="http://ipython.scipy.org/doc/stable/html/parallel/index.html">IPython</a>.</p>
<ul>
<li>Pr&#228;sentation des Projekts: <a title="Kurzfassung" href="http://tinowagner.com/projekte/magnetic_pendulum/vortrag_short-web.pdf">PDF</a> (Kurzfassung, 1 MB), <a title="Langfassung" href="http://tinowagner.com/projekte/magnetic_pendulum/vortrag.pdf">PDF</a> (Langfassung mit weiteren Fraktalen, 14 MB)</li>
<li>Dokumentation: <a href="http://tinowagner.com/projekte/magnetic_pendulum/docs/">hier</a></li>
<li><a title="Quelltext" href="http://tinowagner.com/projekte/magnetic_pendulum/magnetic_pendulum-src.zip">Quelltext</a></li>
<p>
</ul></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2009/07/13/das-magnetpendel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Powerbook und Lower Memory Slot</title>
		<link>http://blog.tinowagner.com/2008/08/29/lower-memory-slot/</link>
		<comments>http://blog.tinowagner.com/2008/08/29/lower-memory-slot/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 21:16:49 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Lower Memory Slot]]></category>
		<category><![CDATA[Powerbook]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=40</guid>
		<description><![CDATA[Das mu&#223; doch nun wirklich nicht sein. Mein Powerbook G4 15&#8220; mit 1,5 GHz, hergestellt im Dezember 2004, mag mich nicht mehr. Oder zumindest den Arbeitsspeicher.
Letzter Sonntag. Safari bleibt pl&#246;tzlich h&#228;ngen und l&#228;&#223;t sich auch nicht sofort beenden. Ich versuche das Problem durch einen Neustart zu beheben. Nach ein paar Minuten erneuter Freeze. Neustart. Was ist [...]]]></description>
			<content:encoded><![CDATA[<p>Das mu&#223; doch nun wirklich nicht sein. Mein <em>Powerbook G4 15&ldquo; mit 1,5 GHz</em>, hergestellt im Dezember 2004, mag mich nicht mehr. Oder zumindest den Arbeitsspeicher.</p>
<p><strong>Letzter Sonntag.</strong> Safari bleibt pl&#246;tzlich h&#228;ngen und l&#228;&#223;t sich auch nicht <em>sofort beenden</em>. Ich versuche das Problem durch einen Neustart zu beheben. Nach ein paar Minuten erneuter Freeze. Neustart. Was ist los? Die Vermutung f&#228;llt auf den Arbeitsspeicher. Ich teste mit <a href="http://www.kelleycomputing.net:16080/rember/">Rember</a>. Aha: bricht schon zu Beginn ab, Fehler beim Reservieren des Speichers. iPhoto l&#228;&#223;t sich auch nicht starten. Am Abend versuche ich den kaputten Speicher zu entfernen. Ein Riegel raus. Absturz. Riegel getauscht, Mac OS X startet nicht. Nach dem Ladebildschirm schaltet sich das Book ab. Start im Single-User-Mode mit <em>Apfel+s</em>.<em> fsck</em> berichtet von Fehlern im Dateisystem, die sich nicht reparieren lassen. Da haben die Freezes wohl Spuren hinterlassen. Kann aber Mac OS X starten, indem ich aus dem Single-User-Mode heraus weiterlaufen lasse.</p>
<p><strong>Montag.</strong> Erwacht nicht aus dem Ruhezustand. Das L&#228;mpchen h&#246;rt auf zu pulsieren und nichts tut sich. Fehler wird erst mal ignoriert. Abends wieder das gleiche Problem. Aber nun l&#228;&#223;t sich der Mac auch nicht mehr anschalten. Schlafleuchte blinkt, dreimaliges Tuten. Das hei&#223;t, es kann keinen nutzbaren Speicher in den Slots finden. Der zweite Riegel also auch kaputt? Ich baue nun wieder den Speicher ein, mit dem das Powerbook ausgeliefert wurde. Zweimal 256 MB. Startet wieder.</p>
<p><strong>Dienstag</strong>. Aktualisiere mein Time-Machine-Backup. Das letzte war schon einen Monat alt. Sind ja Semesterferien und man tr&#228;gt seine Backup-Festplatte ja auch nicht von Ort zu Ort. (Komischerweise passieren Datenverluste ja immer dann, wenn man kein Backup gemacht hat …) Analyse der gesicherten Daten ergibt: alles okay, bis auf die iTunes-Library. Die ist kaputt. Bestelle bei <a href="http://www.cyberport-store.de/">Cyberport</a> ein neues Gigabyte.</p>
<p><strong>Mittwoch</strong>. Will Mac OS X via Time Machine neu installieren. Dummerweise sagt die Installations-<span class="caps">DVD</span>, da&#223; zu wenig Speicher daf&#252;r verf&#252;gbar ist. Es stecken aber 512 MB drin, die auch angezeigt werden, wenn ich mit der Tiger-<span class="caps">DVD</span> starte. Ich baue den Originalspeicher wieder aus und stecke 1 GB Speicher zur&#252;ck in den oberen Slot. Unterer Slot bleibt leer. Kann nun die Leopard-<span class="caps">DVD</span> booten und das Backup zur&#252;ckspielen. Keine Abst&#252;rze. Alles l&#228;uft wie am Schn&#252;rchen. Am Ende habe ich wieder ein lauff&#228;higes System. Time Machine ist schon eine tolle Sache. Ich hole den Speicher bei Cyberport im Laden ab. Komme aber nicht mehr dazu, ihn einzubauen.</p>
<p><strong>Donnerstag</strong>. Zweites GB kommt dazu. Memtest bzw. Rember l&#228;uft ohne Probleme durch. Alles durchgestanden?</p>
<p><strong>Freitag.</strong> Mauszeiger bewegt sich 11:30 Uhr nicht mehr. Beim Neustart fehlt der Startton. Es wird nur noch 1 GB Speicher erkannt.</p>
<p><a rel="lightbox" href="http://blog.tinowagner.com/wp-content/uploads/pb-slot-failure.jpg"><img class="aligncenter size-medium wp-image-42" style="width: 100%;" title="Problem mit dem unteren Slot" src="http://blog.tinowagner.com/wp-content/uploads/pb-slot-failure.jpg" alt="" /></a></p>
<p>Tja. Und damit bin ich wohl Opfer eines Serienfehlers geworden. Der untere Speicherslot ist kaputt (oder tut zumindest so…). Es gibt auch eine <a href="http://lowermemoryslot.editkid.com/">Petition</a>, die Apple auffordert, defekte Logic Boards zu reparieren. Apple hat zwar bis zum Juli 2008 eine <a href="http://support.apple.com/kb/HT2164">kostenlose Reparatur angeboten</a>, aber nur f&#252;r bestimmte Seriennummernbereiche, die Powerbooks von Januar bis Mai 2005 einschlie&#223;en. Meins und die mehr als 4200 Powerbooks der Petitions-Unterzeichner sind da nicht dabei. </p>
<p>Da&#223; nach dem Absturz nur noch 1 GB &#252;brig war, ist wohl dadurch zu erkl&#228;ren, da&#223; der Speicher im unteren Slot als defekt abgestempelt wird. Tauscht man die Speicherriegel wieder untereinander aus, werden beim n&#228;chsten Start wieder volle 2 GB angezeigt.</p>
<p><a rel="lightbox" href="http://blog.tinowagner.com/wp-content/uploads/pb-slot-swap.jpg"><img class="aligncenter size-medium wp-image-42" style="width: 100%;" title="Nach Tausch der Speicherriegel" src="http://blog.tinowagner.com/wp-content/uploads/pb-slot-swap.jpg" alt="" /></a></p>
<p>Memtest / Rember bringen das System dann erfolgreich zum Freeze und nach dem Neustart bleibt nur der obere Riegel &#252;brig.</p>
<p>Das Ausbleiben des Starttons erkl&#228;rt sich dann durch den fehlgeschlagenen Power-On-Self-Test:</p>
<blockquote><p><strong>Selbsttest beim Einschalten:</strong></p>
<p>  Zuletzt ausgef&#252;hrt:<span> </span>29.08.08 15:45<br />
  Ergebnis:<span> </span>Fehlgeschlagen<br />
  Fehlerart:<span> </span>Speicher<br />
  Speicher-Steckpl&#228;tze:<span> </span>SODIMM0/J25LOWER<br />
 </p></blockquote>
<p>Nun bleibt mir wohl nichts anderes &#252;brig, als mich mit 1 GB Speicher zufriedenzugeben. Toll <img src='http://blog.tinowagner.com/wp-content/plugins/smilies-themer/Silk/emoticon_unhappy.png' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2008/08/29/lower-memory-slot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>M&#246;ge es doppel-pendeln!</title>
		<link>http://blog.tinowagner.com/2008/04/02/doppelpendel/</link>
		<comments>http://blog.tinowagner.com/2008/04/02/doppelpendel/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 21:24:04 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Physik]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ODE]]></category>
		<category><![CDATA[Pendel]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/?p=36</guid>
		<description><![CDATA[Die Semesterferien neigen sich dem Ende zu, und nach all der Pr&#252;fungszeit wollte ich mal wieder was programmieren. Doch was? Nun, ich glaube ein Physikstudent sollte zumindest einmal in seinem Leben eine Simulation eines Doppelpendels programmieren  Es ist nicht nur sch&#246;n anzusehen, sondern auch als wohl einfachstes chaotisches System ein physikalisch interessanter Fall.
Die Herleitung [...]]]></description>
			<content:encoded><![CDATA[<p>Die Semesterferien neigen sich dem Ende zu, und nach all der Pr&#252;fungszeit wollte ich mal wieder was programmieren. Doch was? Nun, ich glaube ein Physikstudent sollte zumindest einmal in seinem Leben eine <em>Simulation eines Doppelpendels</em> programmieren <img src='http://blog.tinowagner.com/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> Es ist nicht nur sch&#246;n anzusehen, sondern auch als wohl einfachstes <a href="http://de.wikipedia.org/wiki/Chaos">chaotisches System</a> ein physikalisch interessanter Fall.</p>
<p>Die Herleitung der Bewegungsgleichungen ist dank zwei Semestern theoretischer Physik und <a href="http://de.wikipedia.org/wiki/Lagrange-Formalismus">Lagrange II</a> nicht schwer, wird aber auch bei <a href="http://scienceworld.wolfram.com/physics/DoublePendulum.html">Eric Weisstein&#8217;s World Of Physics</a> sehr sch&#246;n beschrieben. </p>
<p>Die dort hergeleiteten Gleichungen sind</p>
<p><img src="http://blog.tinowagner.com/wp-content/cache/tex_4c0b069366cd66db675f5ef26ccc5f13.png" align="absmiddle" class="tex" alt="M l_1 \ddot \phi_1 + m_2 l_2 \ddot \phi_2 \cos (\phi_1 - \phi_2) + m_2 l_2 \dot \phi^2_2 \sin (\phi_1 - \phi_2) + M g \sin \phi_1 = 0" /></p>
<p><img src="http://blog.tinowagner.com/wp-content/cache/tex_b82ee2f519fdc535351739816840e1d5.png" align="absmiddle" class="tex" alt="m_2 l_2 \ddot \phi_2 + m_2 l_1 \ddot \phi_1 \cos (\phi_1 - \phi_2) - m_2 l_1 \dot \phi^2_1 \sin (\phi_1 - \phi_2) + m_2 g \sin \phi_2 = 0" /></p>
<p>mit <img src="http://blog.tinowagner.com/wp-content/cache/tex_48d58b8640f6c04b8315fe838e2d51bb.png" align="absmiddle" class="tex" alt="M = m_1 + m_2" />  als Gesamtmasse.</p>
<p>Bleibt noch das Problem sie zu l&#246;sen. Analytisch ist das aber ohne N&#228;herung nicht m&#246;glich. (Schon das einfache Fadenpendel l&#228;&#223;t sich analytisch nur f&#252;r kleine Winkel exakt l&#246;sen!)</p>
<p>Also numerisch.</p>
<p>Angefangen mit <a href="http://www.python.org/">Python</a> und dem Rechenpaket <a href="http://scipy.org/">SciPy</a> habe ich also ein Einfach- und ein Doppelpendel nebeneinander aufgeh&#228;ngt. (F&#252;r die Grafkausgabe OpenGL und <a href="http://www,pyglet.org/">Pyglet</a>)</p>
<p>Das gekoppelte Differentialgleichungssystem 2. Ordnung mu&#223; man hierbei zur numerischen L&#246;sung in ein Differentialgleichungssystem 1. Ordnung umformen, damit die Integrationsroutinen aus SciPy anwendbar sind. Aber das ist zum Gl&#252;ck immer m&#246;glich.</p>
<p>Weil es aber langweilig ist, eine fertige Funktion zu nutzen, habe ich auch diese Routinen noch umgesetzt. Genauer gesagt drei verschiedene: das <a href="http://de.wikipedia.org/wiki/Explizites_Euler-Verfahren">Euler-Verfahren</a>, das <a href="http://de.wikipedia.org/wiki/Klassisches_Runge-Kutta-Verfahren">klassische Runge-Kutta-Verfahren</a> mit fester Schrittweite und das Runge-Kutta-Verfahren nach <a href="http://en.wikipedia.org/wiki/Dormand-Prince">Dormand und Prince</a> mit einer sich anpassenden Schrittweite, wie es in <a href="http://www.nrbook.com/">Numerical Recipes</a> beschrieben ist.</p>
<p><a href="http://www.tinowagner.com/projekte/double_pendulum-r25.zip"><img class="alignnone size-medium wp-image-37 image" title="Doppelpendelsimulation mit Python" src="http://blog.tinowagner.com/wp-content/uploads/double_pendulum.png" alt="Doppelpendel" /></a></p>
<p>Lange Rede, kurzer Sinn. Den Python-Code gibt&#8217;s hier: <a href="http://www.tinowagner.com/projekte/double_pendulum-r25.zip">klick</a>. Ausf&#252;hren mit &bdquo;python -O simulation.py&ldquo;.</p>
<p>Zur Ausf&#252;hrung wird, wie gesagt, weiterhin das Modul <a href="http://pyglet.org/download.html">Pyglet</a> ben&#246;tigt. In <em>ode.py</em> findet sich die Implementation der <a title="ODE" href="http://de.wikipedia.org/wiki/Gew&#246;hnliche_Differentialgleichung">ODE</a>-Integrationsroutinen. Um die Pendelparameter zu &#228;ndern, liefere ich eine einfaches und schnell zusammengeschustertes Widget-Toolkit mit, das das Unterfenster erzeugt.</p>
<p><a href="http://www.tinowagner.com/projekte/jpendulum/webstart/launch.jnlp"><img class="aligncenter size-full wp-image-38 image" title="Doppelpendelsimulation mit Java" src="http://blog.tinowagner.com/wp-content/uploads/jpendulum.png" alt="" /></a></p>
<p>Da ich aber auch mal wieder was mit Java machen wollte, habe ich das Doppelpendel noch mit Java, <a href="http://www.netbeans.org/">NetBeans</a> und <a href="https://jogl.dev.java.net/">JOGL</a> (OpenGL-Binding f&#252;r Java) umgesetzt. &bdquo;umgesetzt&ldquo; hei&#223;t hierbei, da&#223; ich den Code nahezu 1:1 von meinem urspr&#252;nglichen Python-Code &#252;bersetzt habe. Die Java-Simulation l&#228;uft etwas schneller und dank Java Web Start kann ich hier auch einen <a href="http://www.tinowagner.com/projekte/jpendulum/webstart/launch.jnlp">Link bieten, um sich das ganze sofort anzuschauen</a>.</p>
<p>Den Quelltext gibt&#8217;s nat&#252;rlich <a href="http://www.tinowagner.com/projekte/jpendulum/jpendulum-r21.zip">auch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2008/04/02/doppelpendel/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Lebendiger Apfelsaft</title>
		<link>http://blog.tinowagner.com/2007/10/29/lebediger-apfelsaft/</link>
		<comments>http://blog.tinowagner.com/2007/10/29/lebediger-apfelsaft/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 12:40:36 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Apfelsaft]]></category>
		<category><![CDATA[Schimmel]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/2007/10/29/lebediger-apfelsaft/</guid>
		<description><![CDATA[
Eigentlich schade drum  
]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/gallery/vermischt/lebewesen.jpg" rel="lightbox"><img src="/wp-content/gallery/vermischt//thumb_lebewesen.jpg" border="0" height="150" width="200" title="Der Apfelsaft lebt …" alt="Der Apfelsaft lebt …" /></a><a href="/wp-content/gallery/vermischt/lebewesen.jpg" rel="lightbox"></a></p>
<p>Eigentlich schade drum <img src='http://blog.tinowagner.com/wp-content/plugins/smilies-themer/Silk/emoticon_unhappy.png' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2007/10/29/lebediger-apfelsaft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Was ein H&#228;kchen werden will, mu&#223; sich beizeiten kr&#252;mmen.</title>
		<link>http://blog.tinowagner.com/2007/10/09/was-ein-haekchen-werden-will-muss-sich-beizeiten-kruemmen/</link>
		<comments>http://blog.tinowagner.com/2007/10/09/was-ein-haekchen-werden-will-muss-sich-beizeiten-kruemmen/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 06:27:37 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Sprache]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/2007/10/09/was-ein-haekchen-werden-will-muss-sich-beizeiten-kruemmen/</guid>
		<description><![CDATA[Gefunden in KHM 4, M&#228;rchen von einem, der auszog das F&#252;rchten zu lernen der Gebr&#252;der Grimm:

Was ein H&#228;kchen werden will, mu&#223; sich beizeiten kr&#252;mmen.

]]></description>
			<content:encoded><![CDATA[<p>Gefunden in <span class="caps">KHM</span> 4, <a href="http://gutenberg.spiegel.de/?id=5&#38;xid=969&#38;kapitel=104&#38;cHash=b2042df08bfuerchte">M&#228;rchen von einem, der auszog das F&#252;rchten zu lernen</a> der Gebr&#252;der Grimm:</p>
<blockquote>
<p>Was ein H&#228;kchen werden will, mu&#223; sich beizeiten kr&#252;mmen.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2007/10/09/was-ein-haekchen-werden-will-muss-sich-beizeiten-kruemmen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erste Hilfe f&#252;r Bilder</title>
		<link>http://blog.tinowagner.com/2007/10/04/erste-hilfe-fuer-bilder/</link>
		<comments>http://blog.tinowagner.com/2007/10/04/erste-hilfe-fuer-bilder/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 16:07:10 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Bildbearbeitung]]></category>
		<category><![CDATA[Retusche]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/2007/10/04/erste-hilfe-fuer-bilder/</guid>
		<description><![CDATA[Wie schon erw&#228;hnt ist Gimp eine feine Sache. Mit den Werkzeugen &#8222;Klonen&#8220; und &#8222;Heilen&#8220; und einem weichen Pinsel lassen sich kaputte Bilder wiederbeleben. Das kann zwar in m&#252;hevolle Kleinarbeit ausarten, lohnt sich aber bestimmt.
Wie&#8217;s funktioniert

Das Opfer in m&#246;glichst hoher Qualit&#228;t und Aufl&#246;sung einscannen. Mehr als 600 dpi sind aber wohl nicht n&#246;tig. Das Bild sollte [...]]]></description>
			<content:encoded><![CDATA[<p>Wie schon erw&#228;hnt ist <a href="http://blog.tinowagner.com/2007/10/03/nuetzliches-zu-gimp/">Gimp</a> eine feine Sache. Mit den Werkzeugen &bdquo;Klonen&ldquo; und &bdquo;Heilen&ldquo; und einem weichen Pinsel lassen sich kaputte Bilder wiederbeleben. Das kann zwar in m&#252;hevolle Kleinarbeit ausarten, lohnt sich aber bestimmt.</p>
<h3>Wie&#8217;s funktioniert</h3>
<ul>
<li>Das Opfer in m&#246;glichst hoher Qualit&#228;t und Aufl&#246;sung einscannen. Mehr als 600 dpi sind aber wohl nicht n&#246;tig. Das Bild sollte in Gimp eine eigene Ebene (&bdquo;Original&ldquo;) bekommen.</li>
<li>Die Original-Ebene duplizieren (&bdquo;Reparatur&ldquo;). Mit dem &bdquo;Heilen&ldquo;-Werkzeug und den richtigen Pinseln lassen sich kleinere Bildst&#246;rungen kaschieren. Das &bdquo;Klonen&ldquo;-Werkzeug hilft, gr&#246;&#223;ere Unebenheiten zu rekonstruieren.
<li>Wenn alle St&#246;rungen beseitigt sind, lohnt es sich, verschiedene Filter auf das Bild anzuwenden
<ul>
<li><strong>Filter → Verbessern → Flecken entfernen</strong>: Entfernt Staub und kleinere Kratzer.</li>
</ul>
</li>
<ul>
<li><strong>Filter → Verbessern → Unscharf maskieren</strong>: Hilft beim Nachsch&#228;rfen.</li>
</ul>
</li>
<li>An den Farben drehen: eine Tonwertkorrektur in <strong>Farben → Werte</strong> oder die Bearbeitung der Farbkurven in <strong>Farben → Kurven</strong> wirken meist Wunder.</li>
</ul>
<ul>
<li>Zuletzt evtl. noch einen <a href="http://de.wikipedia.org/wiki/Sepia">Sepia-Effekt</a> hinzuf&#252;gen: <strong>Farben → Einf&#228;rben</strong> w&#228;hlen und etwas mit den Parametern spielen. Etwa <em>Farbton: 30</em>, <em>S&#228;ttigung: 40</em>, <em>Helligkeit: 20</em>.</li>
</ul>
<h3>Hier ein Beispiel:</h3>
<p><a href="/wp-content/gallery/vermischt/kleine_gisela_kaputt.jpg" rel="lightbox"  ><img src="/wp-content/gallery/vermischt//thumb_kleine_gisela_kaputt.jpg" alt="Kaputtes Bild" title="Kaputtes Bild" width="190" height="200" border="0" class="alignleft" /></a></p>
<p><a href="/wp-content/gallery/vermischt/kleine_gisela_repariert.jpg" rel="lightbox"  ><img src="/wp-content/gallery/vermischt//thumb_kleine_gisela_repariert.jpg" alt="Repariertes Bild" title="Repariertes Bild" width="190" height="200" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2007/10/04/erste-hilfe-fuer-bilder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N&#252;tzliches zu GIMP</title>
		<link>http://blog.tinowagner.com/2007/10/03/nuetzliches-zu-gimp/</link>
		<comments>http://blog.tinowagner.com/2007/10/03/nuetzliches-zu-gimp/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 16:41:28 +0000</pubDate>
		<dc:creator>Tino Wagner</dc:creator>
				<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OS & Apps]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.tinowagner.com/2007/10/03/nuetzliches-zu-gimp/</guid>
		<description><![CDATA[Schon lange braucht keiner mehr viel Geld ausgeben, wenn ein gutes Programm zum Bearbeiten seiner Fotos braucht. Denn es gibt ja GIMP. Besonders mit der derzeit kurz vor der Ver&#246;ffentlichung stehenden Version 2.4 macht die Arbeit Spa&#223;.
Hier ein paar Links zum Einstieg:

Unter den meisten Linux-Distributionen ist es meist schon standardm&#228;&#223;ig installiert. Wenn nicht, dann hilft [...]]]></description>
			<content:encoded><![CDATA[<p>Schon lange braucht keiner mehr viel Geld ausgeben, wenn ein gutes Programm zum Bearbeiten seiner Fotos braucht. Denn es gibt ja <a href="http://www.gimp.org" title="GNU Image Manipulation Program">GIMP</a>. Besonders mit der derzeit kurz vor der Ver&#246;ffentlichung stehenden Version 2.4 macht die Arbeit Spa&#223;.</p>
<p>Hier ein paar Links zum Einstieg:</p>
<ul>
<li>Unter den meisten Linux-Distributionen ist es meist schon standardm&#228;&#223;ig installiert. Wenn nicht, dann hilft der Paketmanager weiter. Release Candiates der Version 2.4 gibt es z.B. als Ubuntu-Paket <a href="http://www.gimpusers.de/news/2007-09-24/gimp-24-rc3-deb-pakete.html">hier</a> (oder im Repository von Gutsy Gibbon, das im Oktober erscheinen wird).</li>
<li>Auf dem Mac ist es etwas komplizierter. F&#252;r Leute mit Intel-Mac gibt es <a href="http://gimp-app.sourceforge.net/">hier</a> schon mal den Release Candidate 3 zum Download. Ein Universal Binary soll folgen, wenn Gimp 2.4 &bdquo;stabil&ldquo; wird. Wer etwas mehr Elan hat, nimmt sich <a href="http://www.macports.org/">MacPorts</a> und installiert sich einen &sbquo;ordentlichen&lsquo; Paketmanager unter Mac OS X. Stets frische Software, mit dem kleinen Nachteil der langen Wartezeit auf die Installation; alles wird aus den Quelltexten frisch gebacken. Ausf&#252;hrliche Anleitungen hierzu finden sich bei <a href="http://www.nasendackel.de/">Nasendackel</a> unter der Rubrik Gimp. Der bastelt nur grade seine Website um.</li>
</ul>
<ul>
<li>Unter Windows gibt es Pakete bei der <a href="http://gimp-win.sourceforge.net/">Gimp-Windows-Seite</a>. Version 2.4 <a href="http://sourceforge.net/project/showfiles.php?group_id=121075&#38;package_id=240554">hier</a>.</li>
</ul>
<p>Hier noch ein paar Seiten f&#252;r gute Tutorials:</p>
<ul>
<li><a href="http://gimp-tutorials.net/">gimp-tutorials.net</a></li>
<li><a href="http://www.gimpusers.de/">gimpusers.de</a></li>
<li>Kurze Tips bei <a href="http://www.gimps.de/">Gimps</a></li>
<li><a href="http://gug.sunsite.dk/?page=tutorials">Bei der Gimp-User-Group</a></li>
</ul>
<ul>
<li>Bei <a href="http://www.pixel2life.com/tutorials/Gimp/All/">Pixel2life</a></li>
</ul>
<p>Hilfe bei Problemen gibt&#8217;s beim <a href="http://www.gimpforum.de/">Gimp-Forum</a>.</p>
<p><strong>Nachtrag</strong>: Wer ein gutes Tutorial zum Webdesign mit Gimp sucht, der schaut sich am besten das Tutorial &bdquo;SimplyBlue web layout&ldquo; bei TechnoMono an: <a href="http://technomono.com/blog/simplyblue-web-layout-part-i/">Teil 1</a> und <a href="http://technomono.com/blog/simplyblue-web-layout-part-ii/">Teil 2</a>. Die Idee mit den Streifen, dem Glanz und der Reflektion im Seitenkopf meiner Website hab ich von dort.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tinowagner.com/2007/10/03/nuetzliches-zu-gimp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
