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
:D

Verfasst: 02.03.2005 23:15
von benny
n1, remi :!: :allright:

Verfasst: 03.03.2005 08:54
von ralle
:shock: und das mit so wenig code... respekt! :D

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. :allright:

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: :D
@benny: nice! :allright:
@IS: :) Obwohl es hier nicht nötig wäre und es noch schneller ginge.

cu
Remi :)