April 25, 2024, 11:34:20 AM

News:

Own IWBasic 2.x ? -----> Get your free upgrade to 3.x now.........


Fractals by Jolly Roger

Started by pistol350, September 08, 2007, 06:33:45 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

pistol350

Have a look ! :)


DEF w:WINDOW
DEF minlen,l,t,wd,ht:INT
DEF lenmult,angleoffset:FLOAT
DECLARE drawline(x:INT,y:INT,length:FLOAT,angle:FLOAT)
WINDOW w,0,0,640,480,@MINBOX|@MAXBOX,0,"Press a key to draw a fractal",mw
SETWINDOWCOLOR w,0
wd=634:ht=455
WAITUNTIL w=0
END
SUB mw
SELECT @class
CASE @IDCLOSEWINDOW
CLOSEWINDOW w
CASE @IDSIZE
GETCLIENTSIZE w,l,t,wd,ht
CASE @IDCHAR
RECT w,0,0,wd,ht,0,0
angleoffset=.5+RND(1):lenmult=.5+RND(.25):minlen=1
IF lenmult>.6 THEN minlen=1+(lenmult-.6)*20
FOR b=0 TO 2:drawline(wd/2,ht/2,ht/7,b*2.1):NEXT b
ENDSELECT
RETURN
SUB drawline(x,y,length,angle)
IF length>minlen
SELECT FLOOR((length-INT(length))*5.99)
CASE 0:c=0xFF:CASE 1:c=0xFFFF:CASE 2:c=0xFF00
CASE 3:c=0xFF0000:CASE 4:c=0xFFFF00:CASE 5:c=0xFF00FF
ENDSELECT
dx=length*SIN(angle):dy=length*COS(angle)
LINE w,x,y,x+dx,y-dy,c
branchx=x+dx:branchy=y-dy
drawline(branchx,branchy,length*lenmult,angle+angleoffset)
drawline(branchx,branchy,length*lenmult,angle-angleoffset)
ENDIF
RETURN
Regards,

Peter B.