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 
