This page contains PowerBASIC 2.1 programs, which generate fractals. The content was part of my first homepage. Since I had difficulties in gathering the sources, I want to contribute them yet.
FOR X=0 TO 2^6-1 FOR Y=0 TO 2^6-1-X IF (X AND Y) = 0 THEN PSET (X,Y) NEXT Y NEXT X
BOX 320,240,2^5-1 SUB BOX (X,Y,R) IF INT(R) <> 0 THEN BOX X+R,Y-R,R/2 BOX X-R,Y-R,R/2 BOX X+R,Y+R,R/2 BOX X-R,Y+R,R/2 LINE (X-R,Y-R)-(X+R,Y+R),,B END IF END SUB
PSET (320,0) LIN 320,0,32 SUB LIN (X,Y,R) IF INT(R) > 0 THEN LINE -(X,Y) LIN X+R,Y+R,R/2 PSET (X,Y) LIN X-R,Y+R,R/2 END IF END SUB
SHARED pi,x,y,a : pi=3.141592654 PSET (x,y) STAR 4 SUB STAR (l?) IF l? > 0 THEN DRW 0 : STAR l?-1 DRW pi/3 : STAR l?-1 DRW -pi*2/3 : STAR l?-1 DRW pi/3 : STAR l?-1 END IF END SUB SUB drw (aq) IF aq THEN INCR a,aq INCR x,COS(a)*3 INCR y,SIN(a)*3 LINE -(x,y) END IF END SUB
FOR I=-1.3 TO 1.3 STEP .01 FOR R=-2.2 TO 1 STEP .01 c=0 : b=0 : a=0 : count%=0 WHILE ABS(a)<=2 AND ABS(b)<=2 AND count%<128 c=a*a-b*b+R b=2*a*b+I a=c INCR count% WEND PSET (230+R*100,140+I*100),count% NEXT R NEXT IWeitere Iterationsformeln für z^3, z^4, z^5 jeweils +(r,i):
a2=a*a b2=b*b c=a2*a-3*a*b2+r b=3*b*a2-b2*b+i a=c a2=a*a b2=b*b ab=a*b c=a2*a2-6*a2*b2+b2*b2+r b=4*(a2*ab-b2*ab)+i a=c a2=a*a b2=b*b a3=a2*a b3=b2*b c=a2*a3-10*a3*b2+5*b2*b2*a+r b=5*a2*a2*b-10*b3*a2+b2*b3+i a=c
xc=-1 : yc=0 xn=.25 : yn=0 FOR i=1 to 10000 a=xn-xc : b=yn-yc IF a>0 THEN xn=SQR((SQR(a*a+b*b)+a)/2) yn=b/(2*xn) ELSE IF a<0 THEN yn=SQR((SQR(a*a+b*b)-a)/2) IF b<0 THEN yn=-yn : xn=b/(2*yn) ELSE xn=SQR(ABS(b)/2) IF xn>0 THEN yn=b/(2*xn) ELSE yn=0 END IF END IF IF i=1 THEN INCR xn,.5 IF RND>.5 THEN xn=-xn : yn=-yn PSET (160+xn*80,100-yn*80) NEXT i
cr=-.1 ci=-1 FOR I=-2 TO 2 STEP 5/600 col%=0 FOR R=-2 TO 2 STEP 5/800 c=0 : b=I : a=R : count%=0 WHILE ABS(a)<=2 AND ABS(b)<=2 AND count%<20 c=a*a-b*b+cr b=2*a*b +ci a=c INCR count%,1 WEND if count%<16 then pset (col%,row%),count% INCR col% NEXT R INCR row% NEXT I
dim a(3,6) a(1,1)=.5 : a(1,4)=.5 : a(2,1)=.5 : a(2,4)=.5 : a(2,5)=.5 a(3,1)=.5 : a(3,4)=.5 : a(3,5)=.25 : a(3,6)=.43 for i=0 to 10000 n=int(rnd*3)+1 t=a(n,1)*x + a(n,3)*y + a(n,5) y=a(n,2)*x + a(n,4)*y + a(n,6) x=t pset (x*400,y*400),8 next i
x=200 y=0 FOR i=1 TO 10000 z=RND IF z<.02 THEN xn=200 yn=.27*y ELSE IF z<.17 THEN xn=-.139*x+.263*y+228 yn=.246*x+.224*y+14.4 ELSE IF z<.3 THEN xn=.17*x-.215*y+163.2 yn=.222*x+.176*y+35.72 ELSE xn=.781*x+.034*y+43 yn=-.032*x+.739*y+108 END IF END IF END IF PSET(xn-100,400-yn) x=xn y=yn NEXT i
Dieses Programm ist eine Implementation eines baumähnlichen Fraktals mittels eines iterierten Funktionensystems. Das Programm erzeugt eine s/w Abbildung, die dem nebenstehendenden Bild nur in etwa entspricht.
s = 6 w = 480 xr(s) = w xo(s) = 0.5 * w yo(s) = w a(1) = 0.195 : a(2) = 0.462 : a(3) = -0.058 : a(4) = -0.035 : a(5) = -0.637 b(1) = -0.488 : b(2) = 0.414 : b(3) = -0.07 : b(4) = 0.07 : b(5) = 0 c(1) = 0.344 : c(2) = -0.252 : c(3) = 0.453 : c(4) = -0.469 : c(5) = 0 d(1) = 0.443 : d(2) = 0.361 : d(3) = -0.111 : d(4) = -0.022 : d(5) = 0.501 e(1) = 0.4431: e(2) = 0.2511: e(3) = 0.5976: e(4) = 0.4884: e(5) = 0.8562 f(1) = 0.2452: f(2) = 0.5692: f(3) = 0.0969: f(4) = 0.5069: f(5) = 0.2513 For x = 1 To 5 : e(x) = e(x) * w : f(x) = f(x) * w : Next x GoSub 2 End 1: xl(s) = a(i) * xl(s + 1) + b(i) * yl(s + 1) + e(i) yl(s) = c(i) * xl(s + 1) + d(i) * yl(s + 1) + f(i) xr(s) = a(i) * xr(s + 1) + b(i) * yr(s + 1) + e(i) yr(s) = c(i) * xr(s + 1) + d(i) * yr(s + 1) + f(i) xo(s) = a(i) * xo(s + 1) + b(i) * yo(s + 1) + e(i) yo(s) = c(i) * xo(s + 1) + d(i) * yo(s + 1) + f(i) 2: If s > 1 Then GoTo 3 Line (xl(1), w - yl(1) + 1)-(xr(1), w - yr(1) + 1) Line (xr(1), w - yr(1) + 1)-(xo(1), w - yo(1) + 1) Line (xo(1), w - yo(1) + 1)-(xl(1), w - yl(1) + 1) Return 3: decr s i = 1 : GoSub 1 i = 2 : GoSub 1 i = 3 : GoSub 1 i = 4 : GoSub 1 i = 5 : GoSub 1 incr s Return
Furthermore, in investigating: Is "IFS1=IFS2" decidable?, we were able to obtain the following result.
Die Natur will, daß die Kinder Kinder seien,
ehe sie Erwachsene werden.
Jean-Jacques Rousseau