Thread 3D-Gitter erzeugen: 3D-Gitter über Objekt lagern
(11 answers)
Opened by Gast at 2007-06-01 16:35
Allso verstehe ich das richtig. In der Datenbank (textdatei) sind die zu einem Molekül gehörigen Atome als Kooardinaten im Raum abgelegt.
Du willst nun schauen wie Wassermoleküle darum am günstigsten angeordnet werden können. Aus dem Handgelenk würde ich eine liste aufstellen in denen du die abstände aller zu den verschiedenen Molekülen gehörenden Atome berechnest. Dann daraus die Anziehuungs/abstoßungskräfte berechnest und und daraus einen bewegungsvecktor errechest und das/die Wassermolekühle in die ensprechende Richtung bewegst/drehst. Dann berechnest du wieder die Kräfte und Bewegst/drehst. Was ganze hat dann ein ende wenn die Drehung/Bewegung genügend klein ist. (was das genau heißt bleibt deinem Fachwissen überlassen) Prinzipiell wäre dabei wichtig Die schittrgröße klein genug zu wählen um ein "Schwingen" des Moleküls um das Optimum so klein wie möglich zu machen, auf der anderen seite müssen die Schritte groß genug sein, um genügend schnell zu einem Ergebnis zu kommen. (man kann die schrittgröße auch abhängig von der Stärke der einwirkenden Kräfte machen) Zur Datenstruktir Würde ich ein Array anlegen in den die miteinander interagierenden Moleküle untergebracht werden. Diese können Entweder ein Objekt sein, in das du verschiedenen Funktionen zur Rotation, Abstandsberechnung, bewegung, etc. einbaust, oder ein einfacher Hash in dem die die aktuellen Werte gespeichert werden. Ich würde die version über ein Ojket vorziehen, da man dadurch verschiedenartige Moleküle auf geliche weise behandeln kann. Wichtig ist welche Kräfte auf das Molekül wirken können. Ich hoffe das hilft dir weiter... (Nebenbei, ich habe so etwas ähnliches schonmal programmiert, Dabei ging es aber um die Vanderwalskräfte zwischen Wasserstoffmolekülen. Das war aber in einem Basicdialekt auf meinem Atari. Ich glaube nicht, das es dir weiterhelfen wird :-) ) |