Software Recycling

15 Jahre alter C Sourcecode des Strategiespiels Kalaha wurde auf Javascript portiert, damit es einfach in jedem Browser gespielt werden kann.

Screenshot der portierten Kalaha Version
Screenshot der portierten Kalaha Version

Etwas Off-Topic, aber es geht immerhin um das Strategiespiel Kalaha. Das Spiel ist in dem Wikipedia Artikel gut erklärt. Es ist relativ anspruchsvoll, aber in den meisten Varianten bereits mathematisch „gelöst“, d.h. man weiß, wer bei optimalem Spiel gewinnt. Es gibt dennoch im Internet kaum Möglichkeiten, das Spiel zu spielen. Daher entschloss ich mich 15 Jahre alten C-Sourcecode auf Javascript zu portieren, damit es einfach in jedem Browser gespielt werden kann. Die aktuellen Browser sollen Javascript relativ schnell ausführen.

Die Suche nach einem Werkzeug, um die Portierung zu automatisieren, war nicht erfolgreich: also  Handarbeit. Meine Javascript Erfahrungen waren relativ begrenzt. Ich nahm also Netbeans zur Hand und hoffte, dass mir die problematischen Stellen markiert werden. Nach 30 Minuten waren alle rot unterschlängelten Stellen entfernt, ich nahm mir einen Kaffee und begann mit dem rudimentären Benutzerinterface.

Keine Stunde später war der 15 Jahre alte Code lauffähig, und mein Browser spielte mit mir Kalaha. So einfach hätte ich mir das nicht vorgestellt.

Zugegeben, die Performance lässt zu wünschen übrig: Ich habe keine genauen Vergleichszahlen, aber schneller als die C-Version auf einem 8MHz PC vor 15 Jahren ist die Javascript-Version nicht. Deshalb wurde kurzer Hand die Spielstärke reduziert.

Die 15 Jahre alte Version war übrigens bereits ein Rewrite einer über 25 Jahre alten Assembler-Version für den SC/MP Mikroprozessor, die auf dem 1MHz Prozessor auch nicht schwächer spielte.

Zum Kalaha Browserspiel!

Geradlinige Ausbreitung von Licht

Zu den ersten Eigenschaften von Licht, die man kennenlernt, gehört die geradlinige Ausbreitung.

Licht breitet sich geradlinig aus
Licht breitet sich geradlinig aus

Zu den ersten Eigenschaften von Licht, die man kennenlernt, gehört die geradlinige Ausbreitung. Manchmal ist diese sehr schön zu sehen.

Polarisiertes Licht in der Natur

Es ist mehr Licht polarisiert, als man denkt
Es ist mehr Licht polarisiert, als man denkt: Links horizontal polarisiert, rechts vertikal.

Die 20 regelmäßigen Leser werden vermutlich etwas von der Polarisation gelangweilt, aber der große Unterschied zwischen horizontal und vertikal polarisiertem Licht bei einem normalen Blick war mir nicht bewusst. Die Sonne stand bereits tief, und ca. 90° links von der Aufnahmerichtung. Das Sonnenlicht, dass an dem Dunst (einfach) gestreut wird, wird daher um ungefähr 90° gestreut. In diesem Fall kann die Polarisationsrichtung nur senkrecht zu Einfalls- und Ausfallsstrahl stehen, also in dem Bild beinahe vertikal. Beide Bilder wurden mit der selben Blende und Belichtungszeit im Abstand von einigen Sekunden aufgenommen. Um eine Idee davon zu bekommen, wo polarisiertes Licht in dem Bild vorkommt, habe ich mit GIMP den Unterschied bestimmt. Bei den feinen Strukturen im Baum sind vermutlich die Blätter nicht genau an der selben Stelle geblieben, so dass die Helligkeit dort eventuell Artefakte sind.

Schiffsschraube verdampft Wasser

In einem Wasser-Strömungskanal blickt man bei diesem Bild auf eine Schiffsschraube, die mit Stroboskoplicht beleuchtet wird.

An den Flügelspitzen einer Schiffsschraube wird Wasser verdampft
An den Flügelspitzen einer Schiffsschraube wird Wasser verdampft

Beim Besuch der Engineer’s Night in Duisburg konnte man ungewöhnliche Perspektiven einnehmen. In einem Wasser-Strömungskanal blickt man bei diesem Bild auf eine Schiffsschraube, die mit Stroboskoplicht beleuchtet wird. Die Spirale enthält Wasserdampfbläschen, da an den Flügelspitzen Wasser verdampft wurde. Sie implodieren nach kurzer Zeit und erzeugen dadurch unerwünschten Lärm.

Polarisation durch Spannungen im Geodreieck

Die Drehung der Polarisationsrichtung polarisierten Lichtes, dass durch ein Geodreieck scheint.

Die Drehung der Polarisationsrichtung des polarisierten Lichtes, dass durch ein Geodreieck scheint.
Die Drehung der Polarisationsrichtung polarisierten Lichtes, dass durch ein Geodreieck scheint.

In den letzten Wochen wurde hier schon mehrere Fotos mit Polarisationsfilter gezeigt. Da mit einem LCD Bildschirm eine schöne großflächige Quelle polarisierten Lichtes zur Verfügung steht und mit 3D Brillen (die einen die meisten Kinos mit nach Hause nehmen lassen, wenn man fragt) billige Polarisationsfilter, kann man viele Experimente preisgünstig realisieren. Für dieses Foto wurde ein Geodreieck auf einen weißen Bereich eines LCD Bildschirms gelegt und durch ein Polarisationsfilter fotografiert. Das Polarisationsfilter wurde so gedreht, dass es das Licht des Bildschirms nicht durchlässt. Das Geodreieck dreht die Polarisationsrichtung so, dass wieder ein Teil des Lichtes durchgelassen wird. Die Drehung ist offensichtlich von der Farbe des Lichtes abhängig und wird durch mechanische Spannungen im Kunststoff verursacht, die beim Spritzgießen entstehen.

In 3D Brillen steckt eine ganze Menge Physik

Moderne 3D Brillen bestehen aus Zirkular-Polarisationsfiltern. Diese Filter haben auf der einen Seite ein normales lineares Polarisationsfilter und auf der anderen Seite eine λ/4 Platte.

In der "falschen" Richtung sieht man (auf dem LCD Display), dass die 3D Brillen linear polarisiert sind.
In der „falschen“ Richtung sieht man (auf dem LCD Display), dass die 3D Brillen linear polarisiertes Licht blockieren.

Moderne 3D Brillen bestehen aus Zirkular-Polarisationsfiltern. Diese Filter haben auf der einen Seite ein normales lineares Polarisationsfilter und auf der anderen Seite eine λ/4 Platte. Daher verhalten sich beide Gläser der Brille in dem linear polarisierten Licht des LCD Bildschirm gleich, wenn die Seite mit dem linearen Polarisationsfilter in Richtung des Bildschirms zeigt. Für einen 3D Effekt wären die Brillen so natürlich nicht geeignet, da hierbei jedes Auge ein anderes Bild „sehen“ soll. Im nächsten Bild erzeugt die „falsch“ herum gehaltene Brille am großen Pferd zirkular polarisiertes Licht, beide Gläser in unterschiedlicher Drehrichtung. Das Licht des unteren Brillenglases wird von der vorderen Brille blockiert, das des oberen Brillenglases durchgelassen.

Die Brille wird im 3D Kino zirkular polarisiert verwendet.
Die Brille wird im 3D Kino zirkular polarisiert verwendet.

In dem aktuellen Wikipedia Artikel werden diese 3D Brillen übrigens  noch nicht behandelt. Vielleicht findet sich jemand, der diese Brillen in dem Wikipedia Artikel ergänzt! In jedem Fall lohnt es sich beim nächsten Kinobesuch mit den Brillen ein wenig zu experimentieren.