@Joel:
vorwiegend für Mathe,
zum Beispiel zum schnellen testen von konvergenz von Reihen, einfach mal ein paar Tausen Glieder errechnen lassen usw.
Oder um kleine Animationen zu schreiben, welche ich dann als exe hochladen und als URL abgebe. Nein das ist kein Scherz!
OT:
Aktuelle lasse ich mir die
Mandelbrot-Menge in verschiedenen Farben Plotten, mit Zoom-Verfahren: (links klick vergrößert bereich, berechnungen dauern etwas)
Als Beispiel für Komplexe Folgen ...
OHNE DEBUGGER STARTEN!, sonst dauern die berechnungen zu lange
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
Global xP = 600
Global yP = 600
Global Zoom.d = 2.0
Global dx.d = -0.5
Global dy.d = 0.0
Global maxQuaAbs = 6
Global maxIter = 256
Global E
Procedure.d PunktIteration(cx.d, cy.d)
Protected QuaAbs.d, Iter.l, x.d, y.d, xt.d, yt.d, ReturnIter.d
While x*x + y*y <= maxQuaAbs And Iter < maxIter
xt = x*x - y*y + cx
yt = 2*x*y + cy
x = xt
y = yt
Iter + 1
Wend
E = #True
ProcedureReturn Iter
EndProcedure
Global Wieder = 0
Global maxEnergie = 256+$600*(Wieder+1)
Global Dim Energie(maxEnergie)
For n = 0 To 255
Energie(n) = RGB(0,0,n)
Next
For j = 0 To Wieder
For n = 0 To 255
Energie(j*$600+n+$100) = RGB( 0 , n ,$FF )
Energie(j*$600+n+$200) = RGB( 0 ,$FF ,$FF-n)
Energie(j*$600+n+$300) = RGB( n ,$FF , 0 )
Energie(j*$600+n+$400) = RGB($FF ,$FF-n, 0 )
Energie(j*$600+n+$500) = RGB($FF , 0 , n )
Energie(j*$600+n+$600) = RGB($FF-n, 0 ,$FF )
Next
Next
Procedure Farbe(iterations_wert)
ProcedureReturn Energie(Int(iterations_wert*maxEnergie/maxIter))
EndProcedure
Procedure Erstellen(Wert)
CreateSprite(0, xP, yP)
StartDrawing(SpriteOutput(0))
DrawingMode(1)
For x = 0 To xP-1 Step 1
For y = 0 To yP-1 Step 1
Iter = PunktIteration((-1+x/300)*Zoom+dx, (-1+y/300)*Zoom+dy)
Plot(x, y, Farbe(Iter))
Next y
Next x
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, xP, yP, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, xP, yP, 0, 0, 0)
CreateSprite(0, xP, yP)
CreateSprite(1, xP/4, yP/4)
StartDrawing(SpriteOutput(1))
DrawingMode(4)
Box(0, 0, xP/4, yP/4, $FFFFFF)
StopDrawing()
Erstellen(1)
Repeat
Delay(10)
WindowEvent()
ClearScreen(0)
DisplaySprite(0,0,0)
DisplayTransparentSprite(1,Mx-xP/8,My-yP/8)
StartDrawing(ScreenOutput())
DrawText(0,0,"Zoomfaktor: "+StrD(1/ZOOM,0), $A0A0A0, $505050)
DrawText(0,20,"d: "+StrD(dx)+" , "+StrD(dy), $A0A0A0, $505050)
StopDrawing()
FlipBuffers()
ExamineMouse()
Mx = MouseX()
My = MouseY()
If Not E
If MouseButton(1)
dx + (Mx/300-1)*Zoom
dy + (My/300-1)*Zoom
Zoom / 4
Erstellen(1)
EndIf
If MouseButton(2)
dx + (Mx/300-1)*Zoom
dy + (My/300-1)*Zoom
Erstellen(1)
EndIf
EndIf
If MouseButton(1)=0 And MouseButton(2)=0
E = #False
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape) : End : EndIf
ForEver