Seite 1 von 2
Binäres Sierpinskidreieck
Verfasst: 02.03.2005 22:00
von remi_meier
Kurz und schön
Code: Alles auswählen
OpenWindow(0, 200,200, 500,500, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 500, 500)
Repeat
StartDrawing(ImageOutput())
For x = 0 To 500
For y = 0 To 500
If x & y <> 0
Plot(x,y, $FF)
EndIf
Next y
Next x
StopDrawing()
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow

Verfasst: 02.03.2005 23:15
von benny
n1, remi

Verfasst: 03.03.2005 08:54
von ralle

und das mit so wenig code... respekt!

Verfasst: 03.03.2005 09:22
von DarkDragon
Warum zeichnest du immer wieder auf das Bild? Da bewegt sich doch nichts:
Code: Alles auswählen
OpenWindow(0, 200,200, 500,500, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 500, 500)
StartDrawing(ImageOutput())
For x = 0 To 500
For y = 0 To 500
If x & y <> 0
Plot(x,y, $FF)
EndIf
Next y
Next x
StopDrawing()
Repeat
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
Verfasst: 03.03.2005 12:08
von Kaeru Gaman
als ich die überschrift gesehen hab, wusste ich, dass es von remi ist,
noch bevor ich auf den autor geschaut hab.

Verfasst: 03.03.2005 12:42
von benny
In Farbe & gespiegelt:
Code: Alles auswählen
OpenWindow(0, 200,200, 300,300, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 300, 300)
x=16
y = 16
n=255
StartDrawing(ImageOutput())
For r=0 To n
For s=0 To n-r
If (r & s)
FrontColor(64+r/4,s/4,s/2+64)
Plot(x+r+5,y+s+5)
FrontColor(s/4,64+r/4,s/2+64)
Plot(x+6+n-r,y+6+n-s)
Else
FrontColor(128+r/4,s/2,s/2+128)
Plot(x+r+5,y+s+5)
FrontColor(s/2,128+r/4,s/2+128)
Plot(x+6+n-r,y+6+n-s)
EndIf
Next s
Next r
StopDrawing()
Repeat
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
Verfasst: 03.03.2005 13:30
von DrShrek
Und als letztes? Speed optimiert.
Code: Alles auswählen
InitSprite()
OpenWindow(0, 200,200, 300,300, #PB_Window_SystemMenu, "")
OpenWindowedScreen(WindowID(0), 0, 0, 300, 300, 0, 0, 0)
Img = CreateSprite(#PB_Any, 300, 300)
x = 16
y = 16
n = 255
StartDrawing(ScreenOutput())
For r=0 To n
For s=0 To n-r
If (r & s)
Plot(x+r+5,y+s+5,RGB(64+r4,s/4,s/2+64))
Plot(x+6+n-r,y+6+n-s,RGB(s/4,64+r/4,s/2+64))
Else
Plot(x+r+5,y+s+5,RGB(128+r/4,s/2,s/2+128) )
Plot(x+6+n-r,y+6+n-s,RGB(s/2,128+r/4,s/2+128) )
EndIf
Next s
Next r
StopDrawing()
Repeat
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
Verfasst: 03.03.2005 13:40
von benny
@Icesoft:
Darauf habe ich
bewußt in meinem Beispiel verzichtet, weil es ja in
letztzer Zeit immer mal
Bug-Reports über
Plot(x,y,RGB) gegeben
hat. (Oder ist der BUG bereits gefixt

)
Deswegen habe ich diese Variante über direkten Speicherzugriff gemieden
und habe mich lieber für die GDI-Version (FrontColor) entschieden.
Besonders weil es bei den Zeichenoperationen im Prinzip nicht so sehr auf
Speed ankommt (wird ja nur einmal berechnet / gezeichnet).
Verfasst: 03.03.2005 13:44
von DrShrek
benny hat geschrieben:@Icesoft:
... (Oder ist der BUG bereits gefixt

)..
Ja! In der 3.93.
Code: Alles auswählen
28. Februar 2005 : Version 3.93
...
- Hinzugefügt: Echtzeit-Debugger-Check für Plot(x,y,Farbe) bei ScreenOutput() und SpriteOutput()
Verfasst: 03.03.2005 15:17
von remi_meier
@benny&ralle: Danke für die Komplimente, aber das ist auch nur eine umgewandelte Info aus dem unendlichen Internet
@DD: Jo ich weiss, ist halt so ein kurzer TestCode für kleine Fraktale von mir, der auch für bewegte Sachen funktionieren soll..
@KG:
@benny: nice!
@IS:

Obwohl es hier nicht nötig wäre und es noch schneller ginge.
cu
Remi
