Geschafft
Wir haben heute in unser Pygame Programm die Stöße der Teilchen Implementiert. Wir haben als Hauptursache des „Ineinander Klemmen“ mancher Teilchen als Ursache festgestellt, dass die betroffenen Teilchen meist in einander erzeugt wurden. Wir haben eine for-Schleifen Konstruktion geschrieben, bei der vor dem Aufruf der Main-Funktion für jedes Teilchen Paar überprüft wird, ob sie ineinander erzeugt wurden und wenn dies der Fall war auch entsprechend verschoben wurden.
for b1 in balls: for i in range(balls.index(ball) + 1, len(balls)): sv_x = balls[i].x - b1.x sv_y = balls[i].y - b1.y distance = np.sqrt(sv_x**2 + sv_y**2) distance_soll = b1.radius + balls[i].radius if distance < distance_soll: while distance < distance_soll: b1.x += sv_x b1.y += sv_y
Nach der Implementierung dieser Konstruktion hat sich zwar ein Fester geöffnet, welches geöffnet blieb, in diesem Fenster ist nichts passiert; Es wurden keine Teilchen initialisiert. War haben uns der Implementierung der Wärmeenergie gewisser Wände angenommen. Dabei haben wir die border_colision-Funktion so abgeändert, dass die SPEED-Faktoren der mit den bestimmten Wänden stoßenden Teilchen um 0,5 erhöht wurde, so dass ein fester Betrag auf die Geschwindigkeit dieser Teilchen addiert wird und der Geschwindigkeitszuwachs nicht von der Ursprungsgeschwindigkeit der Teilchen abhängt. Diese Implementierung funktioniert soweit. Wir haben angefangen die Geschwindigkeitsverteilung zu implementieren, diese soll nach beenden der Simulation mit mathplotlib geplottet werden.
offene Fragen/Probleme
Das in Ineinanderhängen der Teilchen wäre immer noch zu beheben. Es ist noch geplant einen/mehrere Schieberegler zu implementieren, welche die Wärmeenergie der einzelnen Wänden regeln. Manchmal klappt die Kollision von 2 Teilchen noch nicht ganz richtig, wofür wir aber bis jetzt keine Erklärung haben. Außerdem wird noch kein Balkendiagramm, weshalb wir uns noch etwas mehr mit matplotlib auseinandersetzen müssen.
Quellen und Dateien