du musst dir klarmachen, welcher faktor wo was tut.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(1024,768,32,"SinDemo")
ClearScreen($201010)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
For x=0 To 1023 ; das x zum Plotten
; ich mach die berechnungen mal getrennt, zur besseren Lesbarkeit
xf.f = x ; in ne float überführen, damit die teilung sicher funktioniert
y1 = 20 * Sin( xf )
y2 = 20 * Sin( xf / 5 )
y3 = 20 * Sin( xf / 25 )
y4 = 50 * Sin( xf / 25 )
y5 = 100 * Sin( xf / 25 )
Plot( x, y1 + 60, $FF8080 )
Plot( x, y2 + 170, $FF8080 )
Plot( x, y3 + 280, $FF8080 )
Plot( x, y4 + 410, $FF8080 )
Plot( x, y5 + 620, $FF8080 )
Next
DrawText( 10, 10, "y1 = 20 * Sin( xf )", $C06060 )
DrawText( 10, 120, "y2 = 20 * Sin( xf / 5 )", $C06060 )
DrawText( 10, 230, "y3 = 20 * Sin( xf / 25 )", $C06060 )
DrawText( 10, 340, "y4 = 50 * Sin( xf / 25 )", $C06060 )
DrawText( 10, 500, "y5 = 100 * Sin( xf / 25 )", $C06060 )
StopDrawing()
FlipBuffers()
Repeat
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
das Argument für Sin() ist der Winkel in Radiant.
eine
Phase des Sinus (also, ein berg ein tal, bis er wieder von vorne anfängt)
dauert immer von 0 bis 2*PI.
wenn du die x-koordinate direkt eingibst, dann wechselt das so schnell, dass nur son muster rauskommt.
alle 6 pixel fängt es von vorne an, so kann man keine zusammenhängende kurve plotten.
wenn du x durch 5 teilst, lässt du ihm sozusagen 5x so lange zeit.
es dauert jetzt 31 pixel, bis es von vorne anfängt, da kann man schon ne kurve erkennen.
bei /25 dauert eine phase ganze 157 pixel, das ist schon ne schön sanfte kurve.
das andere, der faktor davor, ist die
Amplitude, also die
Höhe der Kurve.
in den ersten drei fällen ist das 20, die kurve geht also von -20 bis +20 um ihre achse.
beim 4ten ist das 50, beim 5ten 100, der effekt ist ja klar zu erkennen.
dann gibt es noch die verschiebung, das ist das +sowieso, was ich direkt beim Plot reingeschrieben hab.
das bestimmt, wohin die Achse der Kurve verschoben wird.
Cos ergibt übrigens ein ähnliches bild, die gleiche kurve nur um 1/4 (90°) Phasenverschoben.