Python program generujacy "kostke" wody

0

hej!!
musze zrobic zadanie na studia, nie zbyt idzie mi programowanie i nie mam gdzie szukac pomocy, dlatego tez desperacko zagladam tutaj... moje polecenie brzmi:

program powinien tworzyc prostopadloscian o zadanych wymiarach, wypelniony podana przez uzytkownika liczba czasteczek wody. czasteczki powinny byc rozmieszczone losowo, ale nalezy sprawdzic czy nie nachodza na siebie. program powinien generowac plik XYZ

totalnie nie wiem jak się za to zabrac i bardzo prosze o jakakolwiek pomoc/ podpowiedzi

1

ok wiec zaczanij od tworzenia prostopadloscianu o zadanych wymiarach (pamietaj ze jest on troj wymiarowy)

jezeli to potrafisz to dobrze! to czytaj dalej, jezeli tego nie potrafisz. Zacznij od jakiegos kursu nauki pythona. NIKT Ci nie zrobi gotowca

Skoro juz masz prostopadloscian pobierasz ile tych czasteczek wody moze miec on (mozesz zalozyc ze jeden punkt na 3d to jedna czasteczka wody) wiec jezeli masz prostopadloscian 2x2x2 to mozesz zmiescic 8 czasteczek wody (powiedzmy ze brzegi tez bierzemy, rozpatrzymy na poczatku latwiejszy przypadek, jezeli to zrobisz to program mozna rozbudowac dosc prosto). Sprawdzasz czy sie zmieszcza te czasteczki wody, jezeli jest ich wiecej niz pojemnosc wypelniasz po prostu caly prostopadloscian (maja nie nachodzic na siebie wiec nie jest mozliwe ze beda w tym samym momencie).
Ok, ale powiedzmy ze uzytkonik podal numer 4 wiec co robisz? Losujesz z przedzialu [0-8] cztery liczby (pamietaj ze nie moga sie powtarzac) i na ich podstawie mozesz sobie ustalic juz wspolrzedne (potrzebujesz mapy, liczba -> wspolrzedne tak by Ci sie nie pomylilo. Wspolrzedne tez mozesz wygenerowac skoro znasz wspolrzedne prostopadloscianu)
Pozniej wypluwasz plik o wszystkich danych jakie wyliczylas (jaki jest ten prostopadloscian i w jakich punktach te czasteczki wody beda rozmieszczone, jezeli to za malo to mozna pewnie nawet wygenerowac wykres xyz ale nie sadze zeby byl potrzebny)

2

Przydadzą się hasła do wyszukiwarki:
"fluid simulation particle".
"molecular viewer"

Przykładowa praca (drobnoziarnista):
http://fluid-particles.googlecode.com/files/realtime%20particle%20based%20fluid%20simulation%20-%20thesis.pdf

Przykładowy soft (gruboziarnisty, poziom atomu):
http://www.pymol.org/

0

bardzo dziękuję za pomoc!


-- coding: utf-8 --

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")

x = int(raw_input("podaj wymiar osi X"))
y = int(raw_input("podaj wymiar osi Y"))
z = int(raw_input("podaj wymiar osi Z"))

#draw cube
r1 = [0,x]
r2 = [0,y]
r3 = [0,z]

for s, e in combinations(np.array(list(product(r1,r2,r3))), 2):
ax.plot3D(*zip(s, e), color="r", marker="o")

liczba = int(raw_input("Podaj ilość cząsteczek wody jaka ma znalezć się w 'kostce'"))


napisałam coś takiego, mam teraz problem, aby "wrzucić" do środka cząsteczki wody...

1 użytkowników online, w tym zalogowanych: 0, gości: 1