2 REM *** NEW MANDALA WITH MODIFIED I/0 *** 3 REM *** PEOPLE'S COMPUTER CENTER : 6/12/74 *** 4 REM *** PROGRAMMER : MARC LE BRUN *** 5 REM *** INTRO & INITIAL DIALOG : DAVE KAUFMAN *** 6 REM *** ORIGINAL PROGRAM BY GREG YOB *** 10 DIM C$[6],A$[3] 12 C$="*. $@" 14 P1=3.14159 16 PRINT "INTRODUCTION (YES OR NO) "; 18 INPUT A$ 20 IF A$[1,1]="N" THEN 100 22 PRINT 24 PRINT " "'7"* YOU "'7"* DESIGN A MANDALA BY TYPING IN SOME NUMBERS." 26 PRINT 28 PRINT " MANDALAS ARE SQUARE PATTERNS. THINK OF A LINE THAT STARTS" 30 PRINT "AT THE MANDALA'S CENTER AND EXTENDS STRAIGHT OUT. IMAGINE" 32 PRINT "SWINGING IT AS IF IT WERE A PIECE OF ROPE, WITH A WEIGHT ON ITS" 34 PRINT "END TO KEEP IT STRAIGHT. WHEN THE LINE DIPS AND CLIMBS, YOU'LL" 36 PRINT "MAKE AN INTERESTING SURFACE." 38 PRINT 40 PRINT " IF THE LINE ITSELF RIPPLES WHILE YOU SWING IT, YOUR SURFACE" 42 PRINT "WILL BE EVEN MORE INTERESTING." 44 PRINT 46 PRINT " THIS IS WHAT MAKING MANDALAS IS ALL ABOUT - "'7"* YOU "'7"* CONTROL" 48 PRINT "THE RIPPLE, AND "'7"* YOU "'7"* CONTROL THE DIPPING." 50 PRINT 52 PRINT " HOW MANY RIPPLES FROM YOUR HAND TO THE END? THAT'S CALLED" 54 PRINT "THE RIPPLE FREQUENCY, AND HOW MANY DIPS IN A COMPLETE SWING," 56 PRINT "THAT'S A FREQUENCY TOO." 58 PRINT 60 PRINT " WHEN "'7"* YOUR "'7"* MANDALA IS MADE, THE RIPPLE AND DIP" 62 PRINT "EFFECTS ARE ADDED - IF ONE IS POSITIVE AND THE OTHER NEGATIVE," 64 PRINT "YOU'LL TEND TO GET A BLANK AREA. BUT IF BOTH ARE POSITIVE," 66 PRINT "YOU'LL HAVE LOTS OF $ AND @ PRINTED - NEGATIVE SURFACES" 68 PRINT "ARE SHOWN WITH * AND . SYMBOLS." 70 PRINT 72 PRINT " ONE MORE THING - YOU CAN MAKE THE RIPPLES AND DIPS HAVE" 74 PRINT "DIFFERENT IMPORTANCE. WHEN YOU GIVE YOUR RIPPLE (OR DIP)" 76 PRINT "FREQUENCY, TYPE A COMMA, AND THEN AN IMPORTANCE NUMBER." 78 PRINT "WHICHEVER HAS THE LARGER IMPORTANCE NUMBER WILL BE THE STRONGER." 80 PRINT 82 PRINT " YOUR MANDALAS HAVE A THIRD EFFECT, A COMBINATION OF DIPS AND" 84 PRINT "RIPPLES. ALL THREE EFFECTS ARE ADDED TO GET THE SURFACE." 86 PRINT 88 PRINT " ADVICE : UNTIL YOU HAVE A GOOD FEEL FOR DIPS AND RIPPLES," 90 PRINT "USE ZERO (0) FOR YOUR COMBINATION NUMBER. ALSO, USE SMALL" 92 PRINT "INTEGERS, LIKE 1 OR 5 OR 4." 100 REM *** INITIAL DIALOG *** 110 PRINT 120 PRINT "SIZE OF MANDALA IN INCHES "; 130 INPUT S 140 IF S >= 1 AND S <= 7 THEN 180 150 PRINT "MANDALAS CAN BE BETWEEN 1 AND 7 INCHES." 160 PRINT "SIZE "; 170 GOTO 130 180 S=INT(2.5*S-.5) 190 PRINT "DIP FREQUENCY AND IMPORTANCE "; 200 INPUT F1,C1 210 PRINT "RIPPLE FREQUENCY AND IMPORTANCE "; 220 INPUT F2,C2 230 PRINT "COMBINATION IMPORTANCE "; 240 INPUT C3 250 PRINT 260 PRINT "HERE IS YOUR MANDALA :" 270 PRINT 280 REM *** PARAMETER NORMALIZATION *** 290 F1=INT(F1+.5) 300 F2=INT(F2+.5) 310 C1=ABS(C1) 320 C2=ABS(C2) 330 C3=ABS(C3) 340 C=C1+C2+C3 350 C1=3*C1/C 360 C2=3*C2/C 370 C3=3*C3/C 380 PRINT 1000 REM *** PRINTING LOOP *** 1010 FOR Y=S TO -S STEP -1 1020 Y2=Y*Y 1030 REM FIND EDGE 1040 X1=S 1050 X2=-S 1060 X3=-1 1070 FOR X=X1 TO X2 STEP X3 1080 R=SQR(X*X+Y2)/S 1090 IF X <> 0 THEN 1120 1100 A=P1*SGN(Y)/2 1110 GOTO 1150 1120 A=ATN(Y/X) 1130 IF X>0 THEN 1150 1140 A=A+P1 1150 G1=SIN(F1*A) 1160 G2=SIN(F2*R*P1) 1170 Q=INT(C1*G1+C2*G2+C3*G1*G2+3)+1 1180 IF X3=1 THEN 1250 1190 IF Q=3 OR Q=4 THEN 1260 1200 REM FOUND EDGE 1210 X1=-S 1220 X2=X 1230 X3=1 1240 GOTO 1070 1250 PRINT C$[Q,Q];C$[Q,Q]; 1260 NEXT X 1270 PRINT 1280 NEXT Y 1290 PRINT 1300 PRINT '7'7'7'7'7'7"HERE WE GO AGAIN ..." 1310 GOTO 100 9999 END