"Wave" erzeugen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

"Wave" erzeugen

Beitrag von techniker »

Hi!

Hat jemand einen Tipp für mich, wie ich solche Linien (dienen nur der Optik) dynamisch erstellen lassen kann?
Welche mathematische Funktion könnte solche "Waves" erzeugen? :D

Danke :mrgreen:

Bild
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: "Wave" erzeugen

Beitrag von NicTheQuick »

Zum Beispiel mehrere überlagerte Sinus-Funktionen. Angenommen deine Bildschirmbreite ist 1920 Pixel, dann könntest du sowas machen:

f(x) = a1 * Sin(o1 + m1 * x * 2.0 * #PI / 1920) + a2 * Sin(o2 + m2 * x * 2.0 * #PI / 1920) + a3 * Sin(o3 + m3 * x * 2.0 * #PI / 1920) + ...

Wobei o1, o2, ... ein Offset darstellt, das du einmalig festlegen oder im Zuge der Animation auch etwas ändern kannst. Und m1, m2, ... ist ein Multiplikator um breitere oder engere Wellen darzustellen. a1, a2, ... sind die Amplituden der Wellen. In einer For-Schleife kannst du das dann recht fix dynamisch programmieren.

Wenn die gesamte Kurve nun noch gedreht sein soll, musst du entweder eine Rotationsmatrix nutzen oder falls du mit der Vector-Library arbeitest, kannst du dafür einfach RotateCoordinates() nutzen. Um die überlagerten Wellen wie in deinem Bild darzustellen, kannst du dir z.B. die letzten 10 Wellenparameter merken und immer alle diese 10 auf einmal zeichnen.
Bild
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: "Wave" erzeugen

Beitrag von techniker »

Sinuswellen überlagern ist auch eine sehr gute Idee.. :-)
Danke für den Tipp.

Ich hatte mich schon an ganzrationalen Funktionen bis 5. Grades probiert - aber etwas ansehnliches kam dabei nicht heraus.. :-(
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: "Wave" erzeugen

Beitrag von Kiffi »

techniker hat geschrieben: 22.09.2021 10:30Hat jemand einen Tipp für mich, wie ich solche Linien (dienen nur der Optik) dynamisch erstellen lassen kann?
Bild

:mrgreen:
Hygge
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: "Wave" erzeugen

Beitrag von udg »

also ich hätte da für dich ein Tool programmiert mit dem du GLSL Code schreiben kannst und dann halt darstellen.
Bild

ist mal fürs Szene Democoding gewesen. Der GLSL Effekt agiert zur Musik. Aber man kann das ja beliebig umschreiben.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
techniker
Beiträge: 160
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: "Wave" erzeugen

Beitrag von techniker »

Hallo udg,

Danke für die Rückmeldung.

OpenGL ist dafür deutlich überzogen, zumal es auch nur eine statische Grafik sein soll.
(Reines Hintergrundbild bei leerem Programmfenster - also nichts wichtiges..)
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: "Wave" erzeugen

Beitrag von udg »

ok ;) dann wäre eine png als Hintergrund ausreichend gewesen. In corelDraw gibt es direkte Pinsel mit denen Du einen Strich ziehst und hast deine Wellen ;)

gibts bestimmt auch online Gens.

also dann, weiter machen
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten