Seite 1 von 1

Sinus Wave Generator für Scrolltexte

Verfasst: 09.07.2017 18:44
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

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 09.07.2017 22:15
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 ?

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 10.07.2017 16:37
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

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 10.07.2017 21:49
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 ?

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 11.07.2017 17:11
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

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 11.07.2017 19:01
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

Re: Sinus Wave Generator für Scrolltexte

Verfasst: 21.07.2017 13:30
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