Fulleren Koordinaten

Hi!

Ich möchte ein Programm schreiben, das Elemente auf eine Kugeloberfläche möglichst gleichmäßig verteilt. Dazu habe ich mir gedacht, dass ein Fulleren diese Verteilung halbwegs gut macht. Könnt ihr mir bitte einen Hinweis geben, wo ich Formeln finde, wie ich die 3D-Koordinaten der Eckpunkte (also wo die C-Atome sitzen) berechnen kann?

Danke
Hansi

Hallo Hansi,

Ich möchte ein Programm schreiben, das Elemente auf eine
Kugeloberfläche möglichst gleichmäßig verteilt. Dazu habe ich
mir gedacht, dass ein Fulleren diese Verteilung halbwegs gut
macht. Könnt ihr mir bitte einen Hinweis geben, wo ich Formeln
finde, wie ich die 3D-Koordinaten der Eckpunkte (also wo die
C-Atome sitzen) berechnen kann?

soetwsa hatte ich auch schon mal geschrieben. Ich hab mit einem Ikosaeder angefangen. Aus einem Dreieck des Ikosaeders habe ich vier gemacht und dann das Gebilde wieder soweit „aufgeblasen“, dass jeder Punkt einen Radius weit vom Ursprung entfernt war. Und dieser Schritt lässt sich mehrmals durchführen.

Das ergab dann wirklich lustige Bildchen. Ein solches Gebilde habe ich sogar mal aus Papier nachgebaut.

Viele Grüße
Stefan

Hi!

Ich möchte ein Programm schreiben, das Elemente auf eine
Kugeloberfläche möglichst gleichmäßig verteilt. Dazu habe ich
mir gedacht, dass ein Fulleren diese Verteilung halbwegs gut
macht. Könnt ihr mir bitte einen Hinweis geben, wo ich Formeln
finde, wie ich die 3D-Koordinaten der Eckpunkte (also wo die
C-Atome sitzen) berechnen kann?

soetwsa hatte ich auch schon mal geschrieben. Ich hab mit
einem Ikosaeder angefangen. Aus einem Dreieck des Ikosaeders
habe ich vier gemacht und dann das Gebilde wieder soweit
„aufgeblasen“, dass jeder Punkt einen Radius weit vom Ursprung
entfernt war. Und dieser Schritt lässt sich mehrmals
durchführen.

Hast du dazu auch eine Formel, mit der man die Eckpunkte im 3D-Raum berechnen kann?

Danke
Hansi

Hi…

Ich möchte ein Programm schreiben, das Elemente auf eine
Kugeloberfläche möglichst gleichmäßig verteilt. Dazu habe ich
mir gedacht, dass ein Fulleren diese Verteilung halbwegs gut
macht.

Es gibt nur eine begrenzte Anzahl von Fullerenen, und nicht alle davon sind kugelförmig. Wenn Du nicht gerade 60 Elemente zu verteilen hast, funktioniert das also nicht.

Könnt ihr mir bitte einen Hinweis geben, wo ich Formeln
finde, wie ich die 3D-Koordinaten der Eckpunkte (also wo die
C-Atome sitzen) berechnen kann?

Für beliebige Elementanzahlen vermute ich, daß sich das Problem nur numerisch lösen lässt. Da Du ja einen Computer verwendest, ist das nicht so schlimm. Eine mögliche Lösung: Definiere, daß sich die Elemente wie Magnete abstoßen. Verteile sie zufällig auf der Kugel und simuliere ihre Bewegung, bis sie zum Stillstand kommen. Leider kann ich nicht auf die Schnelle beweisen, ob es für jede Elementanzahl genau einen Gleichgewichtszustand gibt. Es ist also möglich, daß dieses Verfahren für bestimmte Elementanzahlen eine nicht optimale oder gar keine Lösung liefert.

Ist die Elementanzahl festgelegt, kann man vielleicht einen passenden platonischen oder archimedischen Körper oder einen Sternkörper (platonischer Körper mit aufgesetzten Pyramiden) finden. Die Berechnung der Eckpunkte macht einige Arbeit, ist aber möglich. Passende Formeln habe ich leider nicht bei der Hand. Wenn Du verrätst, wieviele Elemente es sind, kann ich nochmal suchen.

genumi

Hi Hansi!

Ich möchte ein Programm schreiben, das Elemente auf eine
Kugeloberfläche möglichst gleichmäßig verteilt.

Eigentlich ist Mathematik ja die Kunst, Rechnen zu vermeiden, daher könnte es sein, dass ich für das, was ich nun schreibe, geteert und gefedert werde:

Versuch es doch einfach mal mit Zufallskoordinaten. Lege einen Koordinatenraum fest, in dem sich die Kugeloberfläche befinden soll, und den Mittelpunkt der Kugel.
Nun erzeugst du dreidimensionale Zufallskoordinaten und ermittelst die Distanz zwischen der Zufallskoordinate und dem Kugelmittelpunkt.
Wenn die Distanz in ein bestimmtes, kleines Intervall (Radius ± "Mess"Toleranz) fällt, speicherst du die Koordinate, ansonsten wird sie verworfen. Diesen Vorgang wiederholst du so lange, bis die Kugeloberfläche ausreichend dicht mit Koordinaten bestückt ist.

Das klingt nun zwar nach einer abartigen Verschwendung von Rechenleistung, aber ich habe diese zufällige Verteilung mal für den Test eines neuronalen Netzes gebraucht, weil dieses aus irgendeinem Grund immer „gemerkt“ hat, wenn man ihm die Daten in einem systematischen Raster präsentiert hat. Was besseres als diese Zufallsmethode ist mir damals auf die Schnelle nicht eingefallen…

Gruß

Stefan

Hi!

Es gibt nur eine begrenzte Anzahl von Fullerenen, und nicht
alle davon sind kugelförmig. Wenn Du nicht gerade 60 Elemente
zu verteilen hast, funktioniert das also nicht.

Ja, C60 interessiert mich. Ich glaub, dass es auch C50 gibt, C70 ist ein Ellipsoid, hab ich gelesen.

Für beliebige Elementanzahlen vermute ich, daß sich das
Problem nur numerisch lösen lässt. Da Du ja einen Computer
verwendest, ist das nicht so schlimm. Eine mögliche Lösung:
Definiere, daß sich die Elemente wie Magnete abstoßen.
Verteile sie zufällig auf der Kugel und simuliere ihre
Bewegung, bis sie zum Stillstand kommen.

Ist es eine Eigenschaft von Fullerenen, dass alle C-Atome gleich weit von ihren nächsten Nachbarn entfernt sind?

Dieses Simulations-Experiment ist eine gute Idee, vorallem weil diese Eigenschaft, dass alle nächsten Nachbarn gleich weit entfernt sind, für unsere Funk-Simulation eine gute Voraussetzung wäre. Ich könnte für einige Fälle n>=4 simulieren und die Koordinaten als Tabelle abspeichern.

Allerdings ist dieser Aufwand ziemlich groß, dafür, dass ich nur so schnell eine Fulleren-Anordnung einbauen wollte. :smile:

Passende Formeln habe ich leider nicht bei der
Hand. Wenn Du verrätst, wieviele Elemente es sind, kann ich
nochmal suchen.

Da wir sowieso nicht jedes beliebige n brauchen, würde uns sicher n=50, 60 und 70 genügen. Vielleicht noch ein besonders kleines, z.B. n=12

Danke
Hansi

Hi!

Nun erzeugst du dreidimensionale Zufallskoordinaten und
ermittelst die Distanz zwischen der Zufallskoordinate und dem
Kugelmittelpunkt.
Wenn die Distanz in ein bestimmtes, kleines Intervall (Radius
± "Mess"Toleranz) fällt, speicherst du die Koordinate,
ansonsten wird sie verworfen. Diesen Vorgang wiederholst du so
lange, bis die Kugeloberfläche ausreichend dicht mit
Koordinaten bestückt ist.

Naja, Kugelkoordinaten ausrechnen hab ich heute eh zusammengebracht, allerdings ist die Verteilung der Objekte dann nicht homogen, weil ich sie regelmäßig auf Längen- und Breitenkreise (wie die Kreuzungspunkte auf dem Globus) angeordnet hab. Aber ich könnte zur Optimierung der Rechenzeit die Zufallszahlen als Längen- und Breitengraden (nur mehr 2D) verwenden und die Punkte dann anordnen. Hmm, nein, dann hab ich durch die Koordinatentransformation wieder eine Verdichtung bei den Polen.

Trotzdem danke
Hansi

Hallo Hansi,

Hast du dazu auch eine Formel, mit der man die Eckpunkte im
3D-Raum berechnen kann?

Die Formel für die Eckpunkte kannst Du Dir selber ausrechnen, wenn Du hier hin schaust:
http://www.hattendoerfer.de/friedrich/anageo/node38…

Mehr Spaß macht aber diese Seite:
http://www.georgehart.com/
Ich weiß allerdings nicht, ob man da die Eckpunktkoordinaten findet.

Viele Grüße
Stefan

Hi…

Es gibt nur eine begrenzte Anzahl von Fullerenen, und nicht
alle davon sind kugelförmig. Wenn Du nicht gerade 60 Elemente
zu verteilen hast, funktioniert das also nicht.

Ja, C60 interessiert mich. Ich glaub, dass es auch C50 gibt,
C70 ist ein Ellipsoid, hab ich gelesen.

C50 kenne ich nicht, was aber nicht heißen muß, daß es nicht existiert.

Für beliebige Elementanzahlen vermute ich, daß sich das
Problem nur numerisch lösen lässt. Da Du ja einen Computer
verwendest, ist das nicht so schlimm. Eine mögliche Lösung:
Definiere, daß sich die Elemente wie Magnete abstoßen.
Verteile sie zufällig auf der Kugel und simuliere ihre
Bewegung, bis sie zum Stillstand kommen.

Ist es eine Eigenschaft von Fullerenen, dass alle C-Atome
gleich weit von ihren nächsten Nachbarn entfernt sind?

Vermutlich ja, weiß ich aber nicht. Ist es eine Eigenschaft, die Du Dir bei Deiner Verteilung wünscht? Ich denke ja, daher der Vorschlag.

Dieses Simulations-Experiment ist eine gute Idee, vorallem
weil diese Eigenschaft, dass alle nächsten Nachbarn gleich
weit entfernt sind, für unsere Funk-Simulation eine gute
Voraussetzung wäre.

Sag ich doch :wink:

Ich könnte für einige Fälle n>=4
simulieren und die Koordinaten als Tabelle abspeichern.

Allerdings ist dieser Aufwand ziemlich groß, dafür, dass ich
nur so schnell eine Fulleren-Anordnung einbauen wollte. :smile:

Passende Formeln habe ich leider nicht bei der
Hand. Wenn Du verrätst, wieviele Elemente es sind, kann ich
nochmal suchen.

Da wir sowieso nicht jedes beliebige n brauchen, würde uns
sicher n=50, 60 und 70 genügen. Vielleicht noch ein besonders
kleines, z.B. n=12

12 Ecken hat der Ikosaeder, dafür hast Du ja schon einen Link bekommen. Auf der nächsten Seite folgt der Dodekaeder mit 20 Ecken. 32 bekommst Du, wenn Du auf jede Fläche eines Ikosaeders oder Dodekaeders eine gleichseitige Pyramide stellst - Berechnung analog.

Formeln zur Berechnung der Eckpunkte eines C60-Moleküls habe ich immer noch nicht, aber ich habe gerade eins gezeichnet und festgestellt: Der Umfang der Fünfecke entspricht fast genau dem Durchmesser der Umkugel. Wenn Du mit ein bisschen Ungenauigkeit leben kannst, ist damit eine relativ einfache numerische Lösung der Verteilung zu erreichen.

genumi

Hi,
darf ich Dir ein paar Polyeder schenken?
Stöber mal da:
http://www.tan-gram.de/4d-view.pl?dim=3
C60: http://www.tan-gram.de/4d-objekt.pl?OID=24&typ=java
C70: http://www.tan-gram.de/4d-objekt.pl?OID=125&typ=java
C72: http://www.tan-gram.de/4d-objekt.pl?OID=126&typ=java
C74: http://www.tan-gram.de/4d-objekt.pl?OID=127&typ=java
C76: http://www.tan-gram.de/4d-objekt.pl?OID=128&typ=java

Wenn Du Dir jwewils den Quellcode anschaust, findest Du bei

@all [was: Re^2: Fulleren Koordinaten]
Hi!

Vielen Dank für eure zahlreichen Hinweise. Ich gehe jetzt davon aus, das ich die Koordinaten nicht direkt berechnen kann, sondern von vorgegebenen Listen ausgehen muss. Danke für die Links auf Seiten mit solchen Listen.

Ich hab heute einige Listen in Octave eingelesen und die Abstände zwischen allen Knoten berechnet. Interessant ist, dass jeder Knoten 3 nächste Nachbarn hat (nona, wenn man die 3D-Grafiken betrachtet). Einer der 3 ist immer etwas näher, z.B. 1.38, die anderen beiden dann 1.42. Alle weiteren Knoten sind aber dann viel weiter weg (2.4 und mehr). Diese Eigenschaft stimmt bei C20 bis C540.

Ich werde jetzt die Listen der 3D-Koordinaten als Arrays von Structs (Programmiersprache C) umwandeln und statisch in mein Programm reinlinken und je nach Anforderung entsprechend skalieren.

Nochmal vielen Dank!

Bye
Hansi