Seite 1 von 2

Re: Kreis in Pygame unterteilen

Verfasst: Donnerstag 24. Juni 2021, 20:17
von k-net
__deets__ hat geschrieben: Donnerstag 24. Juni 2021, 17:48 Mir ist unklar was diese Kugeln tun sollen. Kannst du das mal beschreiben?
Letztendlich möchte ich diesen optischen Effekt nachbilden:
https://www.youtube.com/watch?v=pNe6fsaCVtI

Jede Kugel bewegt sich eigentlich nur auf ihrer Linie hin und her, aber mit den passenden Abständen entsteht der Effekt, dass sie sich umeinander drehen würden. So wie ich das bisher habe, sieht das auch schon ganz nett aus. Es fehlt noch, dass die Kugeln zum Ende hin ihre Geschwindigkeit verlangsamen und eben die richtige Geschwindigkeit für die Kugeln die ich benannt habe.
Was aber klar ist: du musst dringend Klassen, Argumente und Variablen benutzen. Statt mehrfach den nahezu gleichen Code zu kopieren. Das ist fehlerträchtig und kompliziert.
Das ist mir absolut klar! Ich schreibe den Code aktuell so, weil ich es nicht besser kann. Ich mache das nur, um Python autodidaktisch zu lernen (aus Spaß übrigens, in meinem Alltag oder Beruf hab ich davon nix) und dafür gehe ich langsam vor (auch weil ich nicht so wahnsinnig viel Freizeit habe). Bei dem Code so wie er jetzt ist, weiß ich in jeder Zeile, was passiert. Das ist mir wichtig. Ich möchte auch keine fertigen Lösungen haben (naja, manchmal vielleicht schon) sondern mir das selber erarbeiten, eben um das zu kapieren. Ich möchte aber natürlich eure Unterstützungsbereitschaft auch nicht überstrapazieren. Aber wenn ich eine Formel genannt bekomme, die ich nicht verstehe, habe ich nichts davon und kann die nicht auf spätere Projekte anwenden. Beim Autofahren fängt man ja auch nicht auf der Rennstrecke an, sondern übt erstmal. Daher mache ich das so scheibchenweise in der Hoffnung, niemanden zu nerven :)

Im weiteren Verlauf würde ich natürlich versuchen, den häufig gleich oder ähnlich verwendeten Code in eine elegantere Datenstruktur zu setzen. Das ist aber häufig eine Verständnisfrage. Kennt ihr die Leute, wenn der Lehrer in der Oberstufe irgendwelche wüsten mathematischen Formeln an die Tafel geschrieben hat, die darin direkt irgendwelche Zusammenhänge gesehen haben und angefangen haben, in ihre Hefte zu schreiben? Ich war so einer nicht :D

Re: Kreis in Pygame unterteilen

Verfasst: Donnerstag 24. Juni 2021, 23:05
von __blackjack__
@k-net: Was die Geschwindigkeit angeht, würde ich mal einfach eine Sinus-Schwingung probieren.

Das `pygame.math`-Modul könnte auch interessant sein.

Re: Kreis in Pygame unterteilen

Verfasst: Freitag 25. Juni 2021, 09:05
von k-net
Hi,
könntest du das etwas präziser benennen? Vielleicht hast du irgendwo ein Beispiel oder Tutorial an dem ich mich orientieren kann?
Danke!

Re: Kreis in Pygame unterteilen

Verfasst: Freitag 25. Juni 2021, 09:17
von __deets__
Du willst eine oszillierende Bewegung. Der Sinus ist eine oszillierende Schwingung.

Re: Kreis in Pygame unterteilen

Verfasst: Freitag 25. Juni 2021, 09:57
von __deets__
Ich habe jetzt erst das Video gesehen. Und damit ist klar, dass du einen Sinus nehmen *musst*. Das sind 8 Phasenverschobene Sinusschwingungen über den gesamten Durchmesser.

Re: Kreis in Pygame unterteilen

Verfasst: Freitag 25. Juni 2021, 10:22
von k-net
Okay, dann wär das ja geklärt. Ich wäre trotzdem für eine Erklärung, einen hilfreichen Link oder Tutorial dankbar. :mrgreen:
So sagt mit das nichts :wink:

Re: Kreis in Pygame unterteilen

Verfasst: Freitag 25. Juni 2021, 11:31
von __deets__
Die Position einer Kugel i zum Zeitpunkt t, ausgedrückt als Radius r_i ist

r_i = R * sin(t * f * math.pi * 2 + p_i)

Und dabei ist p_i der Phasenversatz der Kugel i, in radians. Wie groß die p_i sind kann ich nicht sagen, aber wenn man sich das mal aufmalt mit den Kugeln auf den Geraden und gleichzeitig in Kreisform, dann kann man das ja einfach rückwärts rechnen.

f ist einfach die Frequenz mit der das passieren soll in Hertz. Fuer den Effekt wahrscheinlich kleiner 1, also zB 0.1Hz.

Und R ist einfach dein grosser Kreisradius.

Re: Kreis in Pygame unterteilen

Verfasst: Sonntag 27. Juni 2021, 16:38
von rogerb
k-net hat geschrieben: Freitag 25. Juni 2021, 10:22 Okay, dann wär das ja geklärt. Ich wäre trotzdem für eine Erklärung, einen hilfreichen Link oder Tutorial dankbar. :mrgreen:
So sagt mit das nichts :wink:
viewtopic.php?f=9&t=52426

Danke für die Inspiration!

Re: Kreis in Pygame unterteilen

Verfasst: Samstag 3. Juli 2021, 12:16
von k-net
r_i = R * sin(t * f * math.pi * 2 + p_i)
Nachdem ich mir etliche Tutorials zum Einheitskreis, Sinus und Cosinus sowie zu Bewegung von Objekten in Python angeschaut habe, habe ich dennoch nicht den leisesten Hauch einer Ahnung, wie ich das umsetzen soll.
Danke für die Inspiration!
Bitte, freut mich wenn ich zumindest Ideengeber sein konnte. Leider verstehe ich nicht genug von Python (oder Mathe) um nachvollziehen zu können, was ihr da gemacht habt.

Re: Kreis in Pygame unterteilen

Verfasst: Samstag 3. Juli 2021, 12:58
von __deets__
Die Aufgabe erfordert halt diese Mathematik. Wenn du die selbst lösen willst, wirst du dir das erarbeiten müssen. Und jetzt hast du doch eine Musterlösung. Die kannst du studieren.

Re: Kreis in Pygame unterteilen

Verfasst: Samstag 3. Juli 2021, 14:01
von rogerb
@k-net,

hast du dir denn die Schritte in dem anderen Topic mal angeschaut?
viewtopic.php?f=9&t=52426

Ich hatte ja extra versucht zu zeigen wie man von einem Basis-Pygame die einzelnen Schritte nach und nach entwickelt.
Kopier dir doch den Code und schau was er macht.

Re: Kreis in Pygame unterteilen

Verfasst: Sonntag 4. Juli 2021, 19:32
von k-net
Ich habe mir das schon angeschaut, allerdings hatte ich noch nicht die Zeit, mich eingehend damit zu befassen. Einiges kann ich noch nicht nachvollziehen, das versuche ich noch zu verstehen. Wenn nicht, frage ich dich. Aber danke für die Erläuterungen!