Reflections

Once the desired image is stored in the array you can rotate and reflect it in several different directions. It’s all done with mirrors; at least, it looks like mirror reflections when you are done. You create the mirror effect by reading the array in different directions.

Currently your program reads the array from left to right, seven rows at a time, but it is just as easy to read it in the reverse order. Add this line:

140 FOR C=N TO 1 STEP -1: GOSUB 180: NEXT C
and double the graphics width setting in line 130:
130 LPRINT- CHR$(27)"*"CHR$(5)CHR$(2*N)CHR$(0);
Now RUN it.

The left half of the figure mirrors the right half. With a few more changes, the program can read the array upside down and double the output again. Add these two lines:

80 B=N: E=7: S=-190 FOR Z=1 TO 2
and change these three:
60 PRINT "T MINUS";N-R: NEXT R100 IF Z=2 THEN B=1: E=N-6: S=1160 LPRINT: NEXT P: NEXT Z

Now lines 80, 90, and 100 change the order in which the array is read. First (Z = 1) it’s read upside down, then (Z=2) right side up, as before. This is the full listing:

10 DEFINT A: N=21: DIM A(N,N)

20 FOR R=1 TO N: FOR C=1 TO N

30D=SQR(R^2+C^2)

40 IF INT(D+.5)=20 THEN A(R,C)=1

50 NEXT C

60 PRINT "T MINUS";N-R: NEXT R

70 LPRINT CHR$(27)"1"CHR$(7);

80 B=N: E=7: S=-1

90 FOR Z=1 TO 2

183