Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws2223:protokoll_15.03.2023

Geschafft

Wir haben uns von der Idee eines Schiebereglers verabschiedet. Wir haben die Geschwindigkeitsaddition in der border_colision implementier und haben den SPEED-Faktor wieder konstant gelassen. Stattdessen haben wir im Falle einer Kollision eines Teilchens mit der entsprechenden Wand den Betrag seines Vektors berechnet und auf diesen einen festen Betrag addiert, daraus ergibt sich der Betrag der neuen Geschwindigkeitsvektor. Das Verhältnis von x und y-Komponente ist vor und nach dem Stoß gleich. Der Betrag des neuen V-Vektors zum Quadrat ist gleich x nach dem Stoß zum Quadrat plus y nach dem Stoß zum Quadrat. Für y nach dem Stoß zum Quadrat kann man, da das Verhältnis x/y gleich bleibt, x nach dem Stoß zum Quadrat geteilt durch das Verhältnis zum Quadrat substituieren. Diese Formel kann man nach x nach den Stoß umstellen. Dann kann man aus x nach dem Stoß geteilt durch das Verhältnis y nach dem Stoß berechnen.

   def borderCollision(self):
      if self.x >= WIDTH - self.radius:
        self.x = WIDTH - self.radius
        self.vxy[0] *= -1
      elif self.x <= self.radius:
        self.x = self.radius
        self.vxy[0] *= -1
      if self.y >= HEIGHT - self.radius:
        self.y = HEIGHT - self.radius
        self.vxy[1] *= -1
      elif self.y <= self.radius:
        self.y = self.radius
        self.vxy[1] *= -1
        v_add = 0.5
        betrag = np.sqrt(self.vxy[0]**2 + self.vxy[1]**2)
        betrag_neu = betrag + v_add
        verhaeltnis = self.vxy[0] / self.vxy[1]
        if self.vxy[0] > 0:
            self.vxy[0] = np.sqrt(((verhaeltnis**2) * (betrag_neu**2)) / (verhaeltnis**2 +1))
            self.vxy[1] = self.vxy[0] / verhaeltnis
        elif self.vxy[0] < 0:
           self.vxy[0] = -np.sqrt(((verhaeltnis**2) * (betrag_neu**2)) / (verhaeltnis**2 +1))
           self.vxy[1] = self.vxy[0] / verhaeltnis
           

Ohne dass uns der Grund bekannt ist hängen die Teilchen jetzt weniger häufig ineinander. Als einer der letzten Schritte haben wir die Geschwindigkeitsverteilung implementiert. Dabei wird nach schließen des Pygmae Fensters die Geschwindigkeit jedes einzelnen Teilchens erfasst und mit mathplotlib die Häufigkeiten der Geschwindigkeiten über diesen als Balkendiagramm geplottet, dabei gab es noch Probleme. Wir haben am Ende des Tages es geschafft die Probleme zu beheben.

offene Fragen/Probleme

Was nicht mehr verwirklicht wird, aber dennoch interessant wäre, ist ein Feature, dass man die Wärmestrahlung der erhitzten Wand implementiert. Ebenfalls gibt es noch Probleme bei der Geschwindigkeitsverteilungserfassung und der Darstellung dieser.

Quellen und Dateien

brown_pygame3.py.zip

ws2223/protokoll_15.03.2023.txt · Zuletzt geändert: 2023/04/05 14:28 von max.liebscher