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?
Danke
"Wave" erzeugen
"Wave" erzeugen
Never change a running system - Never run a changed system!
(PB 6.03 LTS [x86])
(PB 6.03 LTS [x86])
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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
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.
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.
Re: "Wave" erzeugen
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..
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])
(PB 6.03 LTS [x86])
Re: "Wave" erzeugen
also ich hätte da für dich ein Tool programmiert mit dem du GLSL Code schreiben kannst und dann halt darstellen.
ist mal fürs Szene Democoding gewesen. Der GLSL Effekt agiert zur Musik. Aber man kann das ja beliebig umschreiben.
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
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
Re: "Wave" erzeugen
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..)
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])
(PB 6.03 LTS [x86])
Re: "Wave" erzeugen
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
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
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