Sinus Wave Generator für Scrolltexte

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Sinus Wave Generator für Scrolltexte

Beitrag von udg »

Hallo,

ich habe aus alten PlayStation1 coding Zeiten hier noch ein Tool liegen, mit dem ich damals für die PS1 für Sinus Laufschriften einen Sinus Wobbler nach Bedarf erstellen konnte.

hier eine Anim:

Bild

unten Links sah man die aktuelle Liveschwingung in der sich später der Scrolltext von rechts nach links bewegt hat.

Meine Frage beläuft sich darauf:

Ich möchte dieses Tool neu coden und so anpassen, dass ich es für PureBasic Codings verwenden kann. Ich in dem Tool also auch eine Lifevorschau schwingen sehe was ich da gerade einstelle und dann, speichern als: (zb:) inludescroll.pbi oder Ähnliches, um es dann mit meinem Scrolltext im PureBasic Demo Code nutzen zu können.

Ich habe zwar ein paar libs mit denen ich diverse Scroll verhalten darstellen kann, aber auf die Dauer sind diese zu langweilig. Da es dann doch immer wieder die selben sind.


Ist so ein Sinus Oszi mit PB realisierbar?

Danke für Tipps oder Infos.

VG
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
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Sinus Wave Generator für Scrolltexte

Beitrag von ccode_new »

Hallo udg!

Warum sollte das mit PureBasic nicht gehen?

Na klar geht das.

Wie kann ich mir das mit dem "Scrolltext" vorstellen ?

Vielleicht so, oder ähnlich:

Code: Alles auswählen

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Oh je mi ne!!!", 0)
  End
EndIf

w = 800
h = 600

#factor  = 0.015
x_offset = w + 100

Dim _sin.f(33)

Scrolltext.s = "Dies ist ein Sinus-Test."
theight = 0

If OpenWindow(0, 0, 0, w, h, "Text-Test")
  If OpenWindowedScreen(WindowID(0), 0, 0, w, h)
    If CreateSprite(32,w,h)
      hFont = LoadFont(1,"Comic Sans MS",h/20)
      If StartDrawing(SpriteOutput(32))
      DrawingMode(1)
      DrawingFont(hFont)
      FrontColor(RGB($FF,$FF,$00))
      DrawText(0,0,Scrolltext)
      theight = TextHeight(Scrolltext)
      StopDrawing()
      EndIf
    EndIf
  EndIf
EndIf

Repeat 
  Repeat
    Event = WindowEvent()
    
    If Event = #PB_Event_CloseWindow
      End
    EndIf
  Until Event = 0
  
  If IsScreenActive()
      ClearScreen(RGB(0,0,0))

      y.f + 0.05
      If y > 2*#PI
        y = 0
      EndIf

      x_offset - 2
      If x_offset < -500
        x_offset = w+100
      EndIf

      x = x_offset
      For a = 0 To 599
        ClipSprite(32,a,0,1,SpriteHeight(32))
        DisplayTransparentSprite(32,x,(h/2-theight)+Sin(y+#factor*a)*h/16)
        x+1
      Next a

    EndIf
    
  ExamineKeyboard()
  FlipBuffers()
ForEver
... bei dir dann: Variabel nach angepasster Sinuskurve ?

Oder liege ich falsch ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Sinus Wave Generator für Scrolltexte

Beitrag von udg »

also das mit den scrolltexten sieht in einem Cracktro so aus:

http://filehorst.de/d/bBejDpaF

was ich mir coden möchte, ist dieses Tool was auch erst einmal sinuskurve anzeigt siehe animationsbild in meinem ersten post. dort sehe ich ja welchen weg die laufschrift dann gehen würde, und diese einstellung möchte ich aus dem tool heraus in ein Include speichern.

Ich bin mir nun aber nicht sicher ob und wie ich als preview solche sinus kurven darstellen kann, die dann in echtzeit schwingen und auch Änderungen anzeigen wenn ich einen Wert ändere (möchte ich mit Slidern machen)


Dein Code: ja so schaut es dann aus und das Verhalten des sinus verlaufes möchte ich vorher einstellen können mit dem Tool.
die wobble Line im Oszi zeigt dies dann im Preview Fenster an.

Danke für dein Beispiel, Toller Tipp
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
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Sinus Wave Generator für Scrolltexte

Beitrag von ccode_new »

Hi,
nutze doch das CanvasGadget zum Zeichnen der Kurven.
Die benötigten Zeichenparameter verwaltest du mit Variablen.
Diese Parameter kannst du auch als Preference-File speichern und von diesem lesen.

Wo ist das Problem ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Sinus Wave Generator für Scrolltexte

Beitrag von udg »

Hallo,
nix da Problem. Ich wollte nur wissen ob es geht und wie man so eine Vorschaucurve also einen Oszi zum schwingen bringen kann.

grüße
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
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Sinus Wave Generator für Scrolltexte

Beitrag von man-in-black »

Hi,

wenn du einen Oszi schreiben willst, musst du deine Schwingung nur in zwei Dimensionen betrachten (Ort und Zeit).
Guckst du eine einfache Sinuskurve an, dann ändert sich der "y-Wert" (Ordinate) in "x-Richtung" (Abszisse).
Die Ordinate kannst du in dem Moment mit dem Weg gleichsetzen:

y = sin(x)

Wenn das ganze noch dynamisch werden soll, dann müssen sich die "y-Werte" mit der Zeit t verringern/vergrößern.
Bildlich bedeutet es, dass die Sinuskurve nach links oder rechts in "x-Richtung" verschoben wird.

y = sin(x+t)

Die tollen Effekte aus deinem gif bekommst du dann durch die Überlagerung
verschiedener Schwingungen (mit unterschiedlichen Frequenzen 1/t, Phasenverschiebungen phi, ... ):

y = sin(a_1*x+b_1*t+phi_1) + sin(a_2*x+b_2*t+phi_2) + ... + sin(a_n*x+b_n*t+phi_n)

Hier was zum spielen (die Werte sind relativ zufällig gewählt):

Code: Alles auswählen

InitSprite()
InitKeyboard()


OpenWindow(0,0,0,800,600,"")
OpenWindowedScreen(WindowID(0),0,0,800,600)


Repeat
  
  time = ElapsedMilliseconds()/100
  
  
  ClearScreen(0)
  
  StartDrawing(ScreenOutput())
    For x = 1 To 600
      y = Sin(x/2*#PI/180+time)*100 + 300
      Plot(x,y,$FF0000)
    Next
  StopDrawing()
  
  FlipBuffers()
  

  ExamineKeyboard()
  
Until KeyboardPushed(1)
MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Sinus Wave Generator für Scrolltexte

Beitrag von udg »

@MIB

ich hab mal ein wenig rumgespielt mit deinem Beispiel. Sehr schön :allright:

Aber was ich nicht wegbekomme diesses unflüssige Darstellen der Sinuskurve.

das laggd und ruckelt sich zu sehr ab.
Wie bekomme ich das flüssig hin?

Ich hänge mal das original Tool von Anno B.C. hier an. (getestet unter windows 7 64bit)

http://filehorst.de/d/bqetFDlv

grüße
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