Bewegung bei Fraktalen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Timo

Betreff: Bewegung bei Fraktalen

BeitragFr, Sep 03, 2004 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich wollte mich auch mal hier beteiligen und habe auch einen wunderschönen Effekt (besser "Verlauf") entdeckt. Alles beruht auf der "Julia-Menge" --> http://home.t-online.de/home/Siegfried.Beyer/

Hatte mich mal mit dem Thema Fraktale beschäftigt. Der Quellcode ist nicht ganz von mir, allerdings was mit der Animation zu tun hat schon.

Schauts euch einfach mal an, aber macht bitte den Debugger aus!! Wink Bei mir siehts fast flüssig aus, aber bin ja mit meinem 1.8GHz-Teil schon ziemlich unten dabei... dürfte bei den meisten also klappen Smile

Ach ja: es ist wirklich zu nichts nutze (glaub ich) aber es sieht schön aus!! Wink

BlitzBasic: [AUSKLAPPEN]
Const  amin# = -1.40, amax# = 1.40 ,bmin# = -1.75,bmax# = 1.75,xsmax = 500, ysmax = 500, maxFrames = 650
Local st# = 1.07

Local max = 60
Local radius#,a#,b#,da#,db#,x#,y#,xneu#,yneu#
Local gd,gm,n,xs,ys
Local Image,frame=0

gd=0

Graphics 800,600,16,1
SetBuffer BackBuffer()

Repeat
Cls

da = (amax-amin) / xsmax
db = (bmax-bmin) / ysmax
LockBuffer BackBuffer()
a = amin

For xs=0 To xsmax
b = bmax
For ys=0 To Int(ysmax/2)
x=a
y=b
n=0
Repeat
If KeyHit(1) Then End
xneu = (x*x)/st - (y*y)/st - (0.8)/st
yneu = (2*x*y)/st + (0.15)/st
x = xneu
y = yneu
radius = x*x + y*y
n = n + 1
Until (n > max) Or (radius > 9)

If n < max Then
WritePixelFast xs,ys,pas_color(n)
WritePixelFast xsmax-xs,ysmax-ys,pas_color(n)
EndIf
b = b - db
Next
a = a + da
Next
UnlockBuffer BackBuffer()
Text 10,ysmax + 10,st
Flip

st = st - 0.005
If st < 0.05 Then End
Frame = Frame + 1
Until Frame > MaxFrames
End

Function pas_color(Cl)
Return (Cl Mod 16) * 14
End Function

Gameprogman

BeitragSo, Sep 05, 2004 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Schöner Effekt aber sehr Langsam!
Im Debug-Modus ist er noch Langsamer.
Trotzdem:sieht gut aus!! Smile

Travis

BeitragSo, Sep 05, 2004 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte man ja mal vorberechnen und dann ruckelfrei ausgeben.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Timo

BeitragSo, Sep 05, 2004 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehm... ja hab ich gemacht, einzelne Frames abgespeichert im Format 500*500. Mein Ordner war anschließend bei 600mb. Allerdings waren es .bmp Bilder. Smile
 

morszeck

BeitragMo, Sep 06, 2004 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier eine klein wenig schnellere Version:

BlitzBasic: [AUSKLAPPEN]
Const amin# = -1.40
Const amax# = 1.40
Const bmin# = -1.75
Const bmax# = 1.75
Const xsmax = 500
Const ysmax = 500
Const maxFrames = 650

Local st# = 1.07

Local max = 60
Local radius#,a#,b#,da#,db#,x#,y#,xneu#,yneu#
Local gd,gm,n,xs,ys
Local Image,frame=0

da = (amax-amin) / xsmax
db = (bmax-bmin) / ysmax

ysmax2 = ysmax/2

;---

Graphics 800,600,16,2
SetBuffer BackBuffer()


Repeat

Cls

If KeyHit(1) Then End

LockBuffer BackBuffer()

a = amin

For xs=0 To xsmax

b = bmax

For ys=0 To ysmax2

x=a
y=b
n=0

Repeat
xneu = (x*x - y*y - 0.8)/st ;(x*x)/st - (y*y)/st - 0.8/st
y = (2.0*x*y + 0.15)/st ;(2*x*y)/st + 0.15/st
x = xneu
;y = yneu
;radius = x*x + y*y
n = n + 1
Until (n > max) Or (x*x + y*y > 9)

If n < max Then
col = (n Mod 16) * 14 ;pas_color(n)
WritePixelFast xs,ys,col ;pas_color(n)
WritePixelFast xsmax-xs,ysmax-ys,col;pas_color(n)
EndIf

b = b - db

Next

a = a + da

Next

UnlockBuffer BackBuffer()

Text 10,ysmax + 10,st

Flip

st = st - 0.005

If st < 0.05 Then End

Frame = Frame + 1

Until Frame > MaxFrames
End

;Function pas_color(Cl)
; Return (Cl Mod 16) * 14
;End Function
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB
 

Timo

BeitragMo, Sep 06, 2004 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey wenns schneller läuft kann man mehr animationsschritte hinzufügen!!
Statt:
BlitzBasic: [AUSKLAPPEN]
st = st - 0.005

kann man jetzt schreiben:
BlitzBasic: [AUSKLAPPEN]
st = st - 0.001

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group