Ohh, sorry, daß ich deine PN noch nicht beantwortet hab', es kam was dazwischen und nachher hab' ich's vergessen
Also, am besten nimmst du als Atomkern einen DummyCube. Dem fügst du dann die Kugeln für die Neukleonen hinzu und natürlich die Elektronen.
Ein Objekt kannst du mit AddNewChild dynamisch hinzufügen, und zwar so:
Delphi-Quellcode:
(Sphere: TGLSphere;)
Sphere := TGLSphere(DummyCube1.AddNewChild(TGLSphere));
sphere.Material := SomeMaterial;
Sphere.Radius := SomeRadius;
Sphere.Position := SomeVector;
// usw.
Das machst du natürlich für jedes Nucleon im Kern und entsprechend für die Elektronen. Am besten nimmst du eine MaterialLibrary, in der du einmal weiße Texturen, rote Texturen und blaue (welche Farben haben Elektronen?) hast, dann kannst du die einfach dem Material hinzufügen und must nicht die einzelnen Material-Properties ändern.
Was aber deine Probleme mit der Positionierung angeht, da kann ich dir auch nicht helfen. Das ist kein GLScene-Problem, GLScene zeichnet das Ganze nur. Es gibt mathemtische/physikalische Formeln dafür, die genau berechnen wie Kugeln "ineinanderpassen", da müsstest du also Formelnsamlungen befragen, oder einen Physik-Studenten, der sowas wissen sollte. Die Rotation der Elektronen um den Atomrumpf musst du ebenfalls berechnen, denn die ist meines Wissens zufällig (oder soll es ein Kugelwolkenmodell sein?). Die Position kann man durch Kosinus und Sinus berechnen, den winkel linear mit einem geringen Zufallsfaktor in eine zufällige Richtung bestimmen, die Entfernung bleibt beim Bohrschen Atommodell konstant (innerhalb einer Periode versteht sich
).