Hab mal wieder etwas mit Fraktalen rumgespielt und das ist dabei rausgekommen:
Code: Alles auswählen
sx = 500 ;GetSystemMetrics_(0)
sy = 700 ;GetSystemMetrics_(1)
InitSprite()
InitKeyboard()
Dim Sets.f(3, 5)
param.s = ProgramParameter()
If param = ""
For x = 0 To 3
For y = 0 To 5
Sets(x, y) = (Random(1000) / 1000.0) - 0.5 ;(Random(2000) / 1000) - 1.0
Next
Next
Else ;Lade übergebenes File in Parameterliste Sets()
OpenPreferences(param)
For x = 0 To 3
For y = 0 To 5
Sets(x, y) = ReadPreferenceFloat(Str(x)+Str(y), 0.0)
Next
Next
ClosePreferences()
EndIf
Global a.f, b.f, c.f, d.f, e.f, f.f
DefType.f x0,y0,z0,x1,y1,z1
Global n, zoom
n = 20000
x0 = 0.1
y0 = 0
zoom = 100
Procedure EVENTS()
Protected Name.s
Select WindowEvent()
Case 0
Delay(10)
Case #PB_Event_Gadget
gadgetid = EventGadgetID()
If gadgetid <= 6
Sets(0, gadgetid - 1) = (GetGadgetState(gadgetid) - 2000.0) / 1000.0
ElseIf gadgetid <= 12
Sets(1, gadgetid - 7) = (GetGadgetState(gadgetid) - 2000.0) / 1000.0
ElseIf gadgetid <= 18
Sets(2, gadgetid - 13) = (GetGadgetState(gadgetid) - 2000.0) / 1000.0
ElseIf gadgetid <= 24
Sets(3, gadgetid - 19) = (GetGadgetState(gadgetid) - 2000.0) / 1000.0
ElseIf gadgetid = 25 ;Iterationen
n = GetGadgetState(gadgetid) * 10
ElseIf gadgetid = 26 ;zoom
zoom = GetGadgetState(gadgetid)
ElseIf gadgetid = 27 ;{speichern
Name.s = "IFS-FILE"
While FileSize(Name + ".ifs") <> -1
Name = "Neu " + Name
Wend
Name + ".ifs"
CreatePreferences(Name)
For x = 0 To 3
For y = 0 To 5
WritePreferenceFloat(Str(x)+Str(y), Sets(x, y))
Next
Next
ClosePreferences();}
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
EndProcedure
If OpenWindow(0, 200, 700, 800, 700, #PB_Window_ScreenCentered|#PB_Window_SystemMenu, "IFS-Generator") And OpenWindowedScreen(WindowID(),200,0,sx,sy,1,0,0)
If CreateGadgetList(WindowID()) ;{
TrackBarGadget(1, 5, 5, 190,15, 0, 4000)
SetGadgetState(1, Sets(0, 0) * 1000.0 + 2000)
TrackBarGadget(2, 5,25, 190,15, 0, 4000)
SetGadgetState(2, Sets(0, 1) * 1000.0 + 2000)
TrackBarGadget(3, 5,45, 190,15, 0, 4000)
SetGadgetState(3, Sets(0, 2) * 1000.0 + 2000)
TrackBarGadget(4, 5,65, 190,15, 0, 4000)
SetGadgetState(4, Sets(0, 3) * 1000.0 + 2000)
TrackBarGadget(5, 5,85, 190,15, 0, 4000)
SetGadgetState(5, Sets(0, 4) * 1000.0 + 2000)
TrackBarGadget(6, 5,105, 190,15, 0, 4000)
SetGadgetState(6, Sets(0, 5) * 1000.0 + 2000)
TrackBarGadget(7, 5,125, 190,15, 0, 4000)
SetGadgetState(7, Sets(1, 0) * 1000.0 + 2000)
TrackBarGadget(8, 5,145, 190,15, 0, 4000)
SetGadgetState(8, Sets(1, 1) * 1000.0 + 2000)
TrackBarGadget(9, 5,165, 190,15, 0, 4000)
SetGadgetState(9, Sets(1, 2) * 1000.0 + 2000)
TrackBarGadget(10, 5,185, 190,15, 0, 4000)
SetGadgetState(10, Sets(1, 3) * 1000.0 + 2000)
TrackBarGadget(11, 5,205, 190,15, 0, 4000)
SetGadgetState(11, Sets(1, 4) * 1000.0 + 2000)
TrackBarGadget(12, 5,225, 190,15, 0, 4000)
SetGadgetState(12, Sets(1, 5) * 1000.0 + 2000)
TrackBarGadget(13, 5,245, 190,15, 0, 4000)
SetGadgetState(13, Sets(2, 0) * 1000.0 + 2000)
TrackBarGadget(14, 5,265, 190,15, 0, 4000)
SetGadgetState(14, Sets(2, 1) * 1000.0 + 2000)
TrackBarGadget(15, 5,285, 190,15, 0, 4000)
SetGadgetState(15, Sets(2, 2) * 1000.0 + 2000)
TrackBarGadget(16, 5,305, 190,15, 0, 4000)
SetGadgetState(16, Sets(2, 3) * 1000.0 + 2000)
TrackBarGadget(17, 5,325, 190,15, 0, 4000)
SetGadgetState(17, Sets(2, 4) * 1000.0 + 2000)
TrackBarGadget(18, 5,345, 190,15, 0, 4000)
SetGadgetState(18, Sets(2, 5) * 1000.0 + 2000)
TrackBarGadget(19, 5,365, 190,15, 0, 4000)
SetGadgetState(19, Sets(3, 0) * 1000.0 + 2000)
TrackBarGadget(20, 5,385, 190,15, 0, 4000)
SetGadgetState(20, Sets(3, 1) * 1000.0 + 2000)
TrackBarGadget(21, 5,405, 190,15, 0, 4000)
SetGadgetState(21, Sets(3, 2) * 1000.0 + 2000)
TrackBarGadget(22, 5,425, 190,15, 0, 4000)
SetGadgetState(22, Sets(3, 3) * 1000.0 + 2000)
TrackBarGadget(23, 5,445, 190,15, 0, 4000)
SetGadgetState(23, Sets(3, 4) * 1000.0 + 2000)
TrackBarGadget(24, 5,465, 190,15, 0, 4000)
SetGadgetState(24, Sets(3, 5) * 1000.0 + 2000)
TrackBarGadget(25, 5,500, 190,15, 0, 10000)
SetGadgetState(25, n / 10)
TrackBarGadget(26, 5,530, 190,15, 0, 1000)
SetGadgetState(26, zoom)
ButtonGadget(27, 5, 560, 60, 25, "Speichern")
;}
EndIf
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
For i=0 To n-1
x1 = a * x0 + b * y0 + c
y1 = d * x0 + e * y0 + f
k = Random(3)
a.f = Sets(k, 0)
b.f = Sets(k, 1)
c.f = Sets(k, 2)
d.f = Sets(k, 3)
e.f = Sets(k, 4)
f.f = Sets(k, 5)
x0 = x1
y0 = y1
xp = x0 * zoom + Round(sx/2,1)
yp = y0 * zoom + Round(sy/2,1)
If (i > 100) And xp > 0 And xp < sx And yp > 0 And yp < sy
color = i / 100 * 16777000
FrontColor(Red(color), Green(color), Blue(color))
Plot(xp, yp)
EndIf
Next
StopDrawing()
If KeyboardPushed(#PB_Key_F1)
sp = GrabSprite(#PB_Any, 0, 0, sx, sy)
SaveSprite(sp, "Screenshot.bmp")
FreeSprite(sp)
EndIf
EVENTS()
FlipBuffers()
Until KeyboardPushed(1)
CloseScreen()
Else
MessageRequester("Error","Can't open screen",0)
EndIf
http://de.wikipedia.org/wiki/Iteriertes ... nen-System
Spielt einfach ein bisschen damit rum und wenn ihr etwas tolles gefunden habt, ladet doch einfach die .ifs - Datei hoch (oder kopiert den Inhalt hier rein...)!
greetz
remi