Oskulierende Kugeln
Eine nette Aufgabe der Mathematik ist es, mehrere Kreise so anzuordnen,
dass sie einander berühren (oskulieren bedeutet küssen).
Wir wollen Kugeln unterschiedlichen Durchmessers so in einem Bereich
anordnen, dass jede eine andere berührt.

Um eine hübsche Darstellung zu erhalten, soll unser Programm
eine Include-Datei erstellen, die im Raytracer POV-Ray verarbeitet
werden kann.
Wir wünschen uns:
- es soll die Anzahl der Kugeln, ihre minimale und maximale
Größe wählbar sein
- der Bereich, in dem die Kugeln liegen, darf quadratisch oder
kreisförmig sein, die Seitenlänge bzw. Durchmesser
wählen wir ebenfalls
- als Erweiterung lassen wir auch räumliche Bereiche, also
Würfelform oder Kugel, zu
- wir können die Kugeln unterschiedlich texturieren - dazu
geben wir die Anzahl der vorbereiteten Texturen (in "MyTextures.inc")
an und einen Skalierungsfaktor. Falls die Anzahl Null ist, bekommt
das entstehende Objekt keine Textur. Zu Testzweecken verwenden
wir die bekannten Stein-Texturen
- nach der Berechnung und der Anzeige einer Vorschau schreiben
wir die das Objekt auf Festplatte
Ein Beispiel in Rechtecksform:

Ein weiteres als 3D-Würfel:

Das entstehende Objekte ist eine union. Sie kann wie gewohnt
bearbeitet werden. Dieses Beispiel zeigt einen Schnitt durch die
oskulierenden Hohlkugeln:

Unser Programm wählt die Kugeln nach einer sehr simplen
Strategie:
Die erste wird in die Mitte gesetzt. Nun wird immer wieder ein
zufälliger Punkt gewählt und geprüft, ob er im
zulässigen Bereich liegt. Dann wird eine Kugel untersucht,
die bis zur nächstliegenden Kugel reicht (Berührbedingung).
Diese wird akzeptiert, wenn der nötige Radius im erlaubten
Bereich liegt.
So sieht das Programm aus:

Für eigene Experimente:
Speichere alles in ein Verzeichnis und leg los, indem Du ein
neues Objekt erstellst und abspeicherst!
|