![]() |
GLScene-Komponenten
Hi,
ich beschäftige mich gerade mit der 3d-Programmierung eines Atommodells. Ich wollte das so einfach wie möglich erledigen und dachte mir, dass ich die OpenGL Komponente GLScene nehme. Doch so einfach ist das leider gar nicht...sonst würde ich nicht fragen ;-) Naja ich will das eine bestimmte Anzahl (durch Edit bestimmt) von Kugeln (Spheres) dynamisch erzeugt werden. Sie sollen sich von einander abstßen, also den größt möglichen Abstand zu einander einnehmen. desweiteren sollen ja um den Atomkern (ebenfalls eine Kugel) in einem gewissnen Abstand lieegn. Kann mir wer helfen? Ich komme damit bisher irgendwie überhauopt nicht zu recht. DAnke schon mal |
Wie weit bist Du gekommen ?
Ausserdem gibt hier ein Tutorial zu Opengl in Delphi-Praxis der von Mr.T verfasst wurde dass Dich vielleicht etwas weiter bringen würde. Ansonstens empfehle ich ![]() |
Ohh, sorry, daß ich deine PN noch nicht beantwortet hab', es kam was dazwischen und nachher hab' ich's vergessen :oops:
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:
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.
(Sphere: TGLSphere;)
Sphere := TGLSphere(DummyCube1.AddNewChild(TGLSphere)); sphere.Material := SomeMaterial; Sphere.Radius := SomeRadius; Sphere.Position := SomeVector; // usw. 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 ;-) ). |
noch nicht sehr weit, habe versucht eine Kugel (Sphere) dynamisch zu erstellen, weiß aber irgendwie nicht wie?
Es gibt zwar das hier: GLScene1.Objects.AddNewChild(); Doch kann ich nicht wirklich was damit anfangen, da ich nicht weiß Argument übergeben werden muss. Sicherlich irgendwas mit Spere oder so.Nun was genau? |
uff, danke Tommie-Lie hatte dich gerade nciht gesehen. Werde mich genauer mit beschäftigen. Das Problem ist aber die Zeit...sollte heut fertigwerden.
Also es soll ein Kugelwolkenmodell sein. Und es soll praktisch nur ein Atom gezeigt werden. Den Atomkern wollte ich vernachlässigen. Es soll hauptsächlich um die elektronen bzw. um deren Anordnung gehen. Die Anordnung ist ja eigentlich immer so: Es darf immer nur höchstens 4 Kugelwolken (KW) mit insgesamt 8 elektronen in einem Energienivou (Schale) geben. Bei 2 KW's liegen sie auf einer Linie durch den Atomkern, bei 3 bilden sie ein gleichseitiges Dreieck. Und bei 4 praktisch so eine dreicks-Pyramide. Sie müssten aber alle gleich weit vom Mittelpunkt, dem Kern, entfernt sein. Das müsste man mit den anderen Energienievoux auch machen. Und dann müsste man es drehen können. Diese Gedanken habe ich mir schonmal gemacht. Nur wie sieht es aus mit dem Umsetzen? @tommie-lie: Der Code zum erzeugen einer Kugel, geht irgendwie nicht, er kennt TGLSphere nicht. Was nun? //Nachtrag: Was meint ihr, was ist einfacher? Ein Ionengitter berechnen und anzeigen zu lassen oder das hier? |
Zitat:
Wie du die Position ausrechnest, musst du aber immer noch ein entsprechendes Physikbuch fragen ;-) Zitat:
Einfach TSphere nehmen, dann klappt's. Zitat:
|
ok danke! Dachte ich mir auch.
Dann mach ich so was zuerst... Wie könnte man denn so eine Gitterstruktur mit 2 Ionen bauen? Man muss ja die Koordinationszahl beachten, d.h. wieviel kationen ein Anion umgibt und umgekehrt. Das wiederum heißt dass es nicht immer rechte Winkel sein müssen. Und da habe ich wieder meine Probleme. Könnt ihr bzw. du mir helfen? |
Zitat:
Fängst du also bei den Koordinaten (0;0;0) an, ist dort ein Na, bei (1;0;0) ein Cl und bei (2;0;0) wieder ein Na usw. Bei den Ionenbindungen mit mehr als 2 Partnern wird es wieder schwierig (um genau zu sein genauso schwierig wie bei den Kugelwolken ;-) ), aber auch dafür wirst du sicherlich irgendwelche Formeln finden. |
Stimmt wenn sie im rechten Winkel stehen müsste das relativ einfach sein.
werde mir das nochmal durch den Kopf gehen lassen. Und das wohl mal auf nächstes Wochenende verschieben. Bei Fragen melde ich mich noch mal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz