"Wave" erzeugen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
techniker
Beiträge: 141
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 5.62 [x86] und PB 5.71 [x86])
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8484
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 20.10
NVIDIA Quadro P2200
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: 141
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 5.62 [x86] und PB 5.71 [x86])
Benutzeravatar
Kiffi
Beiträge: 10522
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: 551
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.
PureBasic v5.43 LTS + v5.73 LTS | Windows 10 x64 - Gforce RTX 3090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
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

gekauft bei BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Benutzeravatar
techniker
Beiträge: 141
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 5.62 [x86] und PB 5.71 [x86])
Benutzeravatar
udg
Beiträge: 551
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
PureBasic v5.43 LTS + v5.73 LTS | Windows 10 x64 - Gforce RTX 3090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
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

gekauft bei BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Antworten