AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GLScene-Komponenten

Ein Thema von Alexander · begonnen am 7. Jun 2003 · letzter Beitrag vom 8. Jun 2003
Antwort Antwort
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

GLScene-Komponenten

  Alt 7. Jun 2003, 07:10
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
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#2
  Alt 7. Jun 2003, 11:35
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 http://www.delphigl.com/ zu dem Thema ..
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#3
  Alt 7. Jun 2003, 14:03
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 ).
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4
  Alt 7. Jun 2003, 14:06
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?
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#5
  Alt 7. Jun 2003, 14:18
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?
Alexander
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6
  Alt 7. Jun 2003, 15:51
Zitat von alexander:
Also es soll ein Kugelwolkenmodell sein.
Dann sind meines Wissens die Wolken sowieso ein wenig gestreckt, also tropfenförmig, und mit Spheres geht es dann nicht mehr, weil die ja nunmal immer rund sind. Dazu bräuchtest du ein Mesh, daß du vorher mit 3D Studio Max oder einem ähnlichen Editor erstellt hast.
Wie du die Position ausrechnest, musst du aber immer noch ein entsprechendes Physikbuch fragen

Zitat:
@tommie-lie: Der Code zum erzeugen einer Kugel, geht irgendwie nicht, er kennt TGLSphere nicht. Was nun?
noch die alte GLScene-Version?
Einfach TSphere nehmen, dann klappt's.

Zitat:
Was meint ihr, was ist einfacher? Ein Ionengitter berechnen und anzeigen zu lassen oder das hier?
Da ein Ionengitter gleichmäßiger ist, wäre das bestimmt einfacher. Und da am einfachsten wieder ein Gitter mit nur zwei verschiedenen Ionen, die jweils gleichwertig sind. Sonst müsstest du auch noch die dazwischenliegenden Ionen berechnen, die nicht im rechten Winkel zum Rest des Gitters liegen. Aber so ein einfaches, Zwei-ionen-Gitter wäre bestimmt eifnacher als Kugelwolken...
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#7
  Alt 7. Jun 2003, 16:51
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?
Alexander
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#8
  Alt 7. Jun 2003, 18:16
Zitat von alexander:
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.
Ich meinte eigentlich nur Ionenpaare. Z.B. Kochsalz. Da sind die Ionen im rechten Winkel angeordnet und da ist es ganz leicht, indem man einfach immer abwechselnd an Koordinaten ien Na^+-Ion und ein CL^--Ion zeichnet. In der nächsten "Reihe" dann jeweils um eins versetzt.
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.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#9
  Alt 8. Jun 2003, 18:39
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
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz