|
25 Years of Programming
An open source source for C, C++, OWL, BASIC, MDB, XLS, DOT, and more... |
Home Projects Up Sitemap Search Blog Forum+Chat About Us Privacy Terms of Use Feedback FAQ Images Services Payments Humor Music |
Random Walk "Chaos Game" program draws fractal shapes in GWBASIC, BASICAIf a graphic point wanders around the display screen leaving a trail of where it's been (a "random walk"), it draws fractal shapes. The three variations below were mainly experiments to see what sorts of shapes could be drawn. These were probably inspired by a description of the "chaos game" in James Gleick's book, Chaos, but I'm not sure they actually use the methods described or even capture what the Chaos Game really is, as conceived by Michael Barnsley. If they don't, they should be easily modifiable to do so. |
10 'CHAOSGAM.BAS 3-26-90 PLAYS THE CHAOS GAME BY CREATING FRACTAL SHAPES. 11 'COPYRIGHT (C)1990 STEVEN WHITNEY. 12 'Initially published by http://25yearsofprogramming.com. 13 'Published under GNU GPL (General Public License) Version 3, with ABSOLUTELY NO WARRANTY. 17 'USES A RANDOM WALK TO GENERATE AREAS WITH FRACTAL BOUNDARIES. 18 'I THINK MICHAEL BARNSLEY COINED THE PHRASE CHAOS GAME. 19 'QUIT WITH CTRL-C OR CTRL-BREAK 20 CLS 30 RNDM = TIMER / 3 40 RANDOMIZE 45 'SCREEN 12 : 'ENABLE FOR IBM BASIC 50 CLS 60 WINDOW (-319, -112)-(320, 111) 70 X = 0: Y = 0 80 INCR = 1 90 YINCR = INCR * 224 / 639 110 'LOOP ENTRY POINT 120 COLOUR = 4 130 PSET (X, Y), COLOUR 140 M = INT(RND * 8) 160 IF M = 0 THEN Y = Y + YINCR 170 IF M = 1 THEN Y = Y - YINCR 180 IF M = 2 THEN X = X + INCR 190 IF M = 3 THEN X = X - INCR 191 IF M = 4 THEN X = X + INCR: Y = Y + YINCR 192 IF M = 5 THEN X = X + INCR: Y = Y - YINCR 193 IF M = 6 THEN X = X - INCR: Y = Y + YINCR 194 IF M = 7 THEN X = X - INCR: Y = Y - YINCR 200 IF ABS(Y) >= 111 OR ABS(X) >= 319 THEN 220 210 GOTO 110 220 LOCATE 1, 1: PRINT RNDM: BEEP: BEEP: BEEP: BEEP: BEEP: END These variations were mainly for experimenting with the parameters. 10 'DONUT.BAS 3-27-90 11 'COPYRIGHT (C)1990 STEVEN WHITNEY. 12 'Initially published by http://25yearsofprogramming.com. 13 'Published under GNU GPL (General Public License) Version 3, with ABSOLUTELY NO WARRANTY. 14 'ANOTHER CHAOS GAME, POLAR COORDINATES, MAKES A DONUT SHAPE. 15 'QUIT WITH CTRL-C OR CTRL-BREAK 16 'SCREEN 12 : 'ENABLE FOR IBM BASICA 20 PI = 3.1415926# 30 'CONVERT FROM RECTANGULAR TO POLAR 40 'GET DISTANCE 50 DEF FNA (X, Y) = SQR(X * X + Y * Y) 60 'GET THETA 70 DEF FNB (X, Y) = ATN(Y / X) 80 'CONVERT FROM POLAR TO RECTANGULAR 90 'GET X 100 DEF FNC (D, THETA) = D * COS(THETA) 110 'GET Y 120 DEF FND (D, THETA) = D * SIN(THETA) 130 CLS 140 RANDOMIZE 150 CLS 160 WINDOW (-300, -300)-(300, 300) 170 D = 0 180 THETA = .1 190 COLOUR = 4 200 'LOOP ENTRY POINT 210 PSET (FNC(D, THETA), FND(D, THETA)), COLOUR 220 M = INT(RND * 2) 230 IF M = 0 THEN THETA = THETA + .25: D = D + 10 240 IF M = 1 THEN D = D * .9: THETA = THETA - .4 250 GOTO 200 10 'POLARCHA.BAS 3-27-90 11 'COPYRIGHT (C)1990 STEVEN WHITNEY. 12 'Initially published by http://25yearsofprogramming.com. 13 'Published under GNU GPL (General Public License) Version 3, with ABSOLUTELY NO WARRANTY. 14 'CHAOS GAME USING POLAR COORDINATES 15 'QUIT WITH CONTROL-C OR CONTROL-BREAK. 16 'SCREEN 12 : 'ENABLE FOR IBM BASICA 20 'CONVERT FROM RECTANGULAR TO POLAR 30 'GET DISTANCE 40 DEF FNA (X, Y) = SQR(X * X + Y * Y) 50 'GET THETA 60 DEF FNB (X, Y) = ATN(Y / X) 70 'CONVERT FROM POLAR TO RECTANGULAR 71 'GET X 72 DEF FNC (D, THETA) = D * COS(THETA) 73 'GET Y 74 DEF FND (D, THETA) = D * SIN(THETA) 80 CLS 90 RNDM = TIMER / 3 100 RANDOMIZE 110 CLS 120 WINDOW (-319, -239)-(320, 239) 130 D = 20 131 THETA = .39 150 YINCR = INCR * 479 / 639 160 'LOOP ENTRY POINT 170 COLOUR = 4 180 PSET (FNC(D, THETA), FND(D, THETA)), COLOUR 190 M = INT(RND * 2) 200 IF M = 0 THEN THETA = THETA + .1: D = D + 10 210 IF M = 1 THEN D = D / 2 290 GOTO 160 300 LOCATE 1, 1: PRINT RNDM: BEEP: BEEP: BEEP: BEEP: BEEP: END
|
|
|
|
|
|
|
Copyright ©2011 Steven Whitney. Last modified Tue 05/24/2011 12:30:05 -0700. |
||