Java
Sinus und Co.
by Phil on Jul.02, 2010, under Allgemein, Coden, Ideen, Java
Nach dem Continents v2 ja noch nicht der eigentlichen Idee entspricht – soll ja mal dreidimensional werden – wollte ich ein wenig mit Bewegungen auf Kugeloberflächen experimentieren. So kam eins zum Anderen und ich verlor mich in der Welt der trigonometrischen Funktionen. Bald hatte ich eine graues Band, welches sich auf gewundenen Bahnen – ähnlich den Mustern von Fishers Spirograph – endlos schlängelte.
Dank Casey Reas und Ben Frys Processing Buch habe ich Gefallen am HSB-Farbmodell gefunden, das viele Vorteile gegenüber anderen Modellen bietet – z. B. einfaches Aufhellen oder Abdunkeln einer Farbe ohne komplexe Berechnungen. Dadurch kam dann ein wenig Farbe auf das bisher graue Band.
Nach mehreren Stunden, in denen ich wahllos mit den Parametern gespielt hatte, beschloss ich historische Daten oder in der Natur vorkommende Zahlenkombinationen zu verwenden. Ein paar der so entstehenden Kurven und Muster zeigen eine faszinierende regelmäßige Unregelmäßigkeit.
Auch die nächsten Tage verbrachte ich damit die Formen und Farben der Bänder zu beeinflussen. Ich kann zwar nicht alle Graphen hier posten, aber (continue reading…)
Continents v2
by Phil on Apr.15, 2010, under Coden, Ideen, Java
Im Laufe der letzten Monate haben sich viele kleine Zettel mit Skizzen oder Stichpunkten angesammelt. Jeder Zettel beschreibt eine andere kleine Idee. Während der Thesis hatte ich nicht wirklich die Zeit für die Zettel. Anfang April war es dann soweit – über die Hälfte der armen kleinen auf Papier gebannten Gedanken wurden aussortiert. Manche ergaben keinen Sinn, andere waren nicht weiter verfolgenswert und wieder andere wurden schon von anderen Menschen erdacht und umgesetzt. Am ende blieben drei übrig.
Nicht unbedingt blind suchte ich eine heraus und begann zu überlegen wie sich diese Skizze erweitern oder umsetzen ließe. Es war eine dürftige Skizze zweier Sphären mit Linien. Darunter der Satz: “Weltkugel Schlangen ändern Farbe (o.ä.) sobald sie über einem Kontinent sind.” Als Grundlage hatte ich wohl die von Mikkel Koser geschaffene Animation für das von nr2154 entworfene Logo der COP15. Nur wollte ich die Kontinente sichtbar machen.
Seit einiger Zeit hatte ich auch Casey Reas und Ben Frys Processing Buch hier rumliegen – kurz angelesen. Naheliegend, auch weil Kosers Animation darauf aufbaut, das ganze mit Processing umzusetzen. Zunächst musste ich aber einen Zwischenschritt einlegen, da es doch schon länger her war, dass ich mich mit Processing beschäftigt hatte. Also erst mal eine zweidimensionale Weltkarte.
Angefangen habe ich mit den Schlangen und ihren chaotischen Bewegungen. Danach kam das erste echte Problem – Die Kontinente. Kollisionserkennung kommt ja immer wieder mal vor und auch auf einer Sphäre hat man eine zweidimensionale1 Obefläche, also garnicht so schwer? Leider doch, irgendwie müssen ja die Kontinente Dargestellt werden. Die Lösung war dann doch recht trivial – ein grobes Raster über die ganze Erde und eine Matrix erstellen … von Hand. Heraus kam dann diese erste Version von Continents, mal sehen wann ich dazu komme das ganze zu erweitern.
Zunächst hatte ich rot eingefärbte Kontinente, war aber irgendwie unzufrieden mit der Geschwindigkeit der Schlangen (Nachfolger der Linien). Also hab ich mit verschiedenen Geschwindigkeiten herumgespielt biss ich die passende gefunden hatte. (Naja mit der Geschwindigkeit war ich bald auch nicht mehr zufrieden). Das alleine war auch noch nicht spannend genug. Also musste noch eine Möglichkeit her mit dem Mauszeiger Kontinente anzuwählen.
Leider habe ich kein passendes WordPress Plug-In gefunden, um Processing Applets einzubinden – nunja das wäre dann wohl ein neuer Zettel. Bis dahin kann ich es ja so auf dem Server bereitstellen: Continents v2. Dort ist auch die Matrix angehängt, die ich verwendet habe. Auch die passende Anleitung zu dem kleinen Applet findet man dort.
Eine kleine Neuerung gibt es dann auch noch. Nach dem Jose Pardillas FancyBox for WordPress sich standardkonform integrieren lässt, dachte ich es wäre eine nette Erweiterung
1 naja, wir wollen doch nicht kleinlich sein?
div by zero = Infinity
by Phil on Mai.15, 2008, under Coden, Java
Der Titel sagt doch schon alles, also wenn sich mal jemand wundert, wo der Integer Wert 2147483647 her kommt … man kann durchaus durch Null teilen – fast. Durch Grenzwertberechnung kann man das Ergebnis bestimmen, wer zu faul ist kann auch mal probieren durch immer kleinere Werte zu teilen und wir merken, das Ergebnis wird immer größer.
Teilt man in Java durch Null – nicht null – so bekommt man eine java.lang.ArithmeticException. Allerdings kann man durch 0.0f wunderbar teilen und bekommt dann Infinity geliefert:
System.out.println("div by zero = " + (1 / 0.0f));
Jetzt nochmal zurück zu 2147483647: Das ist der größte Integer Wert, der möglich ist – auch Integer.MAX_VALUE. Tja, und wenn man nun float zu int castet – evtl. auch implizit, wie bei mir der Fall – kann man sich lange den Kopf darüber zerbrechen, woher plötzlich diese riesen Zahl kommt … ergo, Java nimmt als Ersatzwert für unendlich, einfach den größtmöglichen Integer Wert.

















