Seite 1 von 1
VPython: Zellen trinken Wasser und wachsen
Verfasst: Donnerstag 23. Juli 2009, 16:25
von kame
Code: Alles auswählen
from visual import *
import random
scene.width=400
scene.height=700
arrayx = 200
arrayy = 200
anzahlzellen = arrayx
anzahlwasser = arrayx
scene.center=(arrayx/2,arrayy/2,0)
t=0
zelle = []
wasser = []
verbindung = []
for x in range(arrayx):
for y in range(arrayy):
zelle.append(0)
wasser.append(0)
verbindung.append(0)
def zufall():
ax = random.random()
ay = random.random()
ax = ax * arrayx
ay = ay * arrayy
ort =(ax,ay)
return ort
for i in range(anzahlzellen):
ort = zufall()
zelle[i+1] = sphere(pos=(ort), color=(.0,.9,.0))
for i in range(anzahlwasser):
ort = zufall()
wasser[i+1] = sphere(pos=(ort), color=(.0,.9,.9))
abstand1 = 0
while 1:
abstand1 = abstand1 + 1
for i in range(anzahlzellen):
for j in range(anzahlwasser):
abstand2 = sqrt(((zelle[i+1].pos[0]-wasser[j+1].pos[0])**2) + ((zelle[i+1].pos[1]-wasser[j+1].pos[1])**2))
if abstand2 <= abstand1:
print abstand1
verbindung[i*arrayx+j] = curve(pos=[(zelle[i+1].pos[0],zelle[i+1].pos[1]),(wasser[j+1].pos[0],wasser[j+1].pos[1])], radius=.2, color=color.green)
zelle[i+1].radius += .2
wasser[j+1].radius -= .2
if wasser[j+1].radius <= 0:
wasser[j+1].pos += (1000,0,0) #Wasser entfernen
Verfasst: Donnerstag 23. Juli 2009, 17:31
von Hyperion
Was tut es? Ich denke schon man sollte ein paar Sätze dazu schreiben, wenn man denn Interesse hat, seinen Code hier zu veröffentlichen.
Ansonsten auf den ersten Blick das "übliche":
- Keine Sternchen-Importe nutzen!
- Code auf Modulebene "saugt"
- Die Array-Initialisierungen erscheinen mir umständlich
- Bei Python < 3 besser xrange verwenden
- Bei Listen muss man in Python nicht über den Index auf Elemente zugreifen, sondern kann direkt iterieren
- Der Mischmasch aus Deutsch und Englisch im Code liest sich unschön
- Es gibt True und Fals in Python, daher sollte man diese auch nutzen bei wahrheitswerten (while True:)
- Im Modul random gibt es einige nützliche Funktionen, die man besser anstatt der Konstruktion in der zufall() Funktion nutzen könnte.
- keine Kommentare!
Verfasst: Samstag 25. Juli 2009, 14:52
von sma
Bin zu faul zu gucken, was VPython wohl ist, aber zum Stil ein paar Tipps:
Code: Alles auswählen
width, height = 200, 200
anzahl_zellen = width
anzahl_wasser = width
size = width * height
zelle, wasser, verbindung = [0] * size, [0] * size, [0] * size
def zufaelliger_ort(): # war zufall
return random.randrange(width), random.randrange(height)
for i in range(anzahl_zellen):
zelle[i] = sphere(pos=zufaelliger_ort(), color=...)
...
Stefan
Verfasst: Samstag 25. Juli 2009, 16:08
von hendrikS
Ich habe mir eben VPython runtergeladen und kurz die Beispiele ausprobiert. Lohnt sich schon, finde ich.
Zum Programm: Was ich komisch fand, dass der Bildinhalt plötzlich ziemlich klein wird.
Und ohne Hintergrundinformation ist das Beispiel für die meisten hier im Forum wohl eher kaum verwertbar.
Wer sich mit VPython befassen möchte, guckt sich wohl eher die Beispiele an.
Verfasst: Samstag 25. Juli 2009, 17:20
von cofi
hendrikS hat geschrieben:Ich habe mir eben VPython runtergeladen und kurz die Beispiele ausprobiert. Lohnt sich schon, finde ich.
Dann haettest du auch gleich die Beschreibung mitliefern koennen
vpython.org hat geschrieben:VPython is the Python programming language plus a 3D graphics module called "Visual" originated by David Scherer in 2000. VPython makes it easy to create navigable 3D displays and animations, even for those with limited programming experience. Because it is based on Python, it also has much to offer for experienced programmers and researchers.
http://vpython.org/