Warum ist Schaum weiß?

Ob Badeschaum in der Badewanne, der Schaum auf der Spitze sich brechender Wellen oder die Schaumkrone auf einem frisch gezapften Bier – alle sind strahlend weiß. Das Erstaunliche dabei ist, dass die Flüssigkeiten, die den Schaum bilden, alles andere als weiß sind.

Wasser ist völlig klar; Bier – je nach Sorte – gelblich oder bräunlich. Ob wir etwas transparent, spiegelnd oder undurchsichtig sehen, hängt davon ab, wie das Material das auftreffende (weiße) Licht beeinflusst. Flüssigkeiten und andere Materialien wirken auf uns glasklar, wenn sie das Licht ungehindert passieren lassen. Eine Flüssigkeit kann das Licht an der Grenzschicht zur Luft aber auch teilweise oder ganz reflektieren. Dies hängt von dem Winkel ab, unter dem das Licht auf die Grenzschicht trifft.

Dieses Phänomen kann man beispielsweise an einem windstillen Tag an einem See beobachten: Schaut man in einem flachen Winkel auf die glatte Wasseroberfläche, wirkt sie wie ein Spiegel. Schaut man aber senkrecht auf die Oberfläche, kann man unter die Wasseroberfläche sehen. Schaum besteht aus vielen kugelförmigen Luftblasen unterschiedlicher Größe, die von einer dünnen Flüssigkeitsschicht umgeben sind. Fällt Licht auf diese gewölbten Grenzschichten, wird ein Teil direkt reflektiert. Durch die Wölbung wird das Licht, welches an unterschiedlichen Stellen auftritt, in unterschiedliche Richtungen zurück geworfen. Dadurch sehen wir in jeder einzelnen Seifenblase ein schwaches und verzerrtes Spiegelbild. Der andere Teil des Lichtes wird abgelenkt und kann im Anschluss viele Male an anderen Seifenblasen reflektiert oder erneut abgelenkt werden. Insgesamt wird dadurch ein Großteil des einfallenden Lichtes reflektiert. Durch die Ablenkung der vielen unregelmäßig angeordneten Seifenblasen geschieht die Reflexion jedoch in zufällige Richtungen. Man spricht dabei von Lichtstreuung. Dadurch wirkt der Schaum weiß und undurchsichtig.

Aber warum hat der Schaum nicht die Farbe der Flüssigkeit? In welcher Farbe ein Gegenstand auf uns wirkt, hängt davon ab, welche Anteile des Lichtes hindurch gelassen und welche von den Molekülen der Flüssigkeit aufgenommen (absorbiert) werden. Absorbiert ein Material das Licht vollständig, wirkt es auf uns schwarz. Einige Flüssigkeiten (wie beispielsweise Bier) lassen nur bestimmte Farben ungehindert hindurch. Die übrigen Farben werden von den im Bier enthaltenen Farbstoffen absorbiert. Als Folge sieht man nur diejenigen Anteile des Lichtes, die ungehindert passieren können. Im Schaum sind die Flüssigkeitsschichten jedoch sehr dünn und enthalten daher nur wenige Farbstoffe. Das Licht trifft so auf seinem Weg durch den Schaum nur auf wenige Farbstoffe. Dadurch spielt die Streuung des Lichtes eine größere Rolle als die Absorption durch die Farbstoffe. Der Bierschaum erscheint daher vor allem weiß.

Diesen Artikel habe ich für den ExtraTip Göttingen verfasst. Am Donnerstag den 10.11.2011 ist er dort in der Kategorie „Frag den Wissenschaftler“ erschienen. Der Artikel ist auch auf der Homepage des Max-Planck-Instituts für Dynamik und Selbstorganisation veröffentlicht worden.

Verwendung von JSON-Daten innerhalb einer JavaScript-Anwendung

JSON (JavaScript Object Notation) in ein kompaktes Datenformat, mit dem komplexe Datenstrukturen abgebildet und zwischen Anwendungen ausgetauscht werden können. JSON erfreut sich zunehmender Beliebtheit, da im Vergleich zu XML weniger Verwaltungsdaten (Overhead) benötigt werden. In diesem Artikel stelle ich kurz vor, wie JSON innerhalb einer JavaScript-Anwendung verwendet werden kann.

Zunächst zeige ich die manuelle Erstellung eines JSON-Objektes. Im Anschluss gebe ich ein Beispiel dafür, wie ein JSON-Objekt durch die Instanziierung einer JavaScript-Klasse erzeugt werden kann. Im letzten Beispiel wird das JSON-Objekt durch Parsen eines JSON-Strings erzeugt.

Eine allgemeine Beschreibung des JSON-Formates ist auf JSON.org zu finden. Zudem wird in zahlreichen Artikeln auf StackOverflow das Thema JSON behandelt (JSON valid chars, Illegal characters in object or JSON key, Are there limitations for key names in JSON-files?).

Manuelle Erstellung

Im folgenden wird zunächst ein JSON-Objekt (manuell) erzeugt.
Mit Hilfe der Ausgabe-Funktion (ausgabe()) soll der Zugriff auf die einzelnen Teile des Objektes demonstriert werden.

Hinweis: ich verwende generell den UTF-8 Zeichensatz. Beim Nachprogrammieren muss dieser eventuell angepasst werden (siehe W3.org).

<html>
<head>
	<title>JavaScript und JSON</title>
	<meta charset="utf-8"/>
</head>
<body>
 
JSON-Demonstration.
<script>
/** Objekt mit dem Namen 'manuell'. */
manuell = {
  name: "Peter",
  tiernamen: ["Bello", "Miezie"],
  /* Felder können weitere Objekte enthalten. */
  auto: {
    /* Benennung der Felder ist Case-sensitiv. */
    SITZE: 4,
    kennzeichen: "A-BC-123"
  }
};
 
/** Ausgabefunktion */
function ausgabe(objekt) {
  alert(
    'Hallo!\n'
    + objekt.name + ' hat ' + objekt.tiernamen.length + ' Haustiere.\n'
    + 'Eines davon heißt: ' + objekt.tiernamen[0] + '.\n'
    + '\n'
    + 'Das Auto hat ' + objekt.auto.SITZE + ' Sitze.\n'
  );
}
 
ausgabe(manuell);
</script>
 
</body>
</html>

Objektoreintierte Programmierung in JavaScript

Zunächst werden die JavaScript-Klassen Person und Auto erstellt. Details zur Objektorientierten Programmierung mit JavaScript gibt es auf WebmasterPro.de.

/** Definition der Klassen. */
function Person(name, tiere, auto) {
	this.name      = name;
	this.tiernamen = tiere;
	this.auto      = auto;
}
function Auto(Sitze, Kennzeichen) {
	this.SITZE       = Sitze;
	this.kennzeichen = Kennzeichen;
}

Im Anschluss wird das Objekt instanziiert.

/* Objekt erzeugen. */
klasse = new Person(
             "Gerda",
             ["Fips", "Felix"],
             new Auto(7, "D-EF-456")
         );

Die Ausgabe erfolgt dann über:

ausgabe(klasse);

Parsen eines JSON-Strings

Strings, die ein JSON-Objekt repräsentieren, können mit Hilfe der jQuery-Funktion parseJSON() in ein JSON-Objekt umgeformt werden. Dabei ist zu beachten, dass die Schlüssel (keys) in Anführngszeichen stehen (also: {"name": "Gustav"} anstatt {name: "Gustav"}).

Zunächst muss jQuery in den Quelltext eingebunden werden. Dazu wird folgende Programmzeile innerhalb von <head>...</head> hinzugefügt.

<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>

Im Anschluss wird der String (hier aus der Variable json) geparst:

json =	'{'
     + '"name": "John",'
     + '"tiernamen": ["Flipper", "Blubb", "Goldie"],'
     + '"auto": {'
       + '"SITZE": 2,'
       + '"kennzeichen": "G-HI-789"'
       + '}'
     + '}';
jquery = jQuery.parseJSON(json);

Die Ausgabe der Daten erfolgt dann über:

ausgabe(jquery);