Last active
February 1, 2022 06:59
-
-
Save jblang/e232ad83326a392e44d7439a59b0be0d to your computer and use it in GitHub Desktop.
AppleSoft Advanced Graphics Techniques
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 REM Advanced Graphics Techniques--Part II by Bob Boothe | |
2 REM 80 Microcomputing Magazine, May 1981, Page 119-142 | |
3 REM https://archive.org/details/80-microcomputing-magazine-1981-05/page/n121/mode/2up | |
4 REM Converted to AppleSoft by J.B. Langston, January 2022 | |
10 HOME : HGR : HCOLOR= 3: POKE 49234,0 | |
20 PI = 3.14:XC = 139:YC = 95:SC = YC | |
30 R1 = SC:R2 = SC:V = 18: GOSUB 100: GOSUB 2000 | |
40 GOSUB 200: GOSUB 300: GOSUB 400: GOSUB 500: GOSUB 600 | |
50 SD = 76:TD = 3:TM = 2: GOSUB 700 | |
60 SD = 60:TD = 2:TM = 2: GOSUB 700 | |
70 SD = 60:TD = 4:TM = 4: GOSUB 700 | |
80 GOSUB 800: GOSUB 900 | |
90 TEXT : END | |
100 REM Figure 1: Regular polygon | |
110 FOR T1 = 0 TO 2 * PI - .001 STEP 2 * PI / V | |
120 FOR T2 = T1 + 2 * PI / V TO 2 * PI - .001 STEP 2 * PI / V | |
130 GOSUB 1000 | |
140 NEXT : NEXT | |
150 RETURN | |
200 REM Figure 2: "The Eye" | |
210 SZ = 189:XO = XC - SZ / 2:YO = YC - SZ / 2 | |
220 FOR Q = 0 TO SZ STEP 9 | |
230 HPLOT XO,YO + Q TO XO + Q,YO + SZ | |
240 HPLOT XO + Q,YO TO XO + SZ,YO + Q | |
250 NEXT | |
260 V = 11:R1 = SC - 35:R2 = R1: GOSUB 100 | |
270 GOTO 2000 | |
300 REM Figure 3: Moire pattern | |
305 R1 = SC / 2:R2 = SC * 2:XO = XC - R2 / 2:YO = YC - R2 / 2 | |
310 FOR T = 0 TO PI / 2 STEP PI / 180 | |
320 X1 = INT ( COS (T) * R1):Y1 = SIN (T) * R1 | |
330 X2 = INT ( COS (T) * R2):Y2 = SIN (T) * R2 | |
340 HPLOT XO + X1,YO + Y1 TO XO + X2,YO + Y2 | |
350 HPLOT XO + R2 - X1,YO + R2 - Y1 TO XO + R2 - X2,YO + R2 - Y2 | |
360 NEXT | |
370 GOTO 2000 | |
400 REM Figure 4: "The Tunnel" | |
410 SZ = SC * 1.14:X1 = XC * 1.08:Y1 = YC * 1.15 | |
420 FOR Q = 1 TO 36 | |
430 X2 = X1 + 5 * Q + 2:Y2 = Y1: HPLOT X1,Y1 TO X2,Y2 | |
440 X1 = X2:Y1 = Y2 + 5 * Q + 3: HPLOT X1,Y1 TO X2,Y2 | |
450 X2 = X1 - 5 * Q - 5:Y2 = Y1: HPLOT X1,Y1 TO X2,Y2 | |
460 X1 = X2:Y1 = Y2 - 5 * Q - 6: HPLOT X1,Y1 TO X2,Y2 | |
470 NEXT | |
480 GOTO 2000 | |
500 REM Figure 5: Simple disk | |
510 R1 = SC:R2 = SC | |
520 FOR T1 = 0 TO 2 * PI STEP PI / 50 | |
530 T2 = T1 + 3 * PI / 4: GOSUB 1000 | |
540 NEXT | |
550 GOTO 2000 | |
600 REM Figure 6: Overlapping spiral | |
610 FOR T1 = 0 TO 10 * PI STEP PI / 20 | |
620 R1 = 2.9 * T1:T2 = T1 + 2 * PI / 3:R2 = 2.9 * T2: GOSUB 1000 | |
630 NEXT | |
640 GOTO 2000 | |
700 REM Figures 7-9: Four leaf rose, squares, eight leaf rose | |
710 FOR T1 = 0 TO 2 * PI STEP PI / SD | |
720 R1 = COS (TM * T1) * SC:T2 = T1 + PI / TD:R2 = COS (TM * T2) * SC: GOSUB 1000 | |
730 NEXT | |
740 GOTO 2000 | |
800 REM Figure 10: Triangle spiral | |
810 FOR T = 0 TO 2 * PI STEP PI / 30 | |
820 T1 = T:R1 = T * 15:T2 = T + 2 * PI / 3:R2 = R1: GOSUB 1000 | |
830 T1 = T + 4 * PI / 3: GOSUB 1000 | |
840 T2 = T: GOSUB 1000 | |
850 NEXT | |
860 GOTO 2000 | |
900 REM Figure 11: Scaled triangle spiral | |
910 R1 = 1 | |
920 FOR T = 0 TO 3.24 STEP PI / 30 | |
930 T1 = T:R1 = R1 * 1.16:T2 = T + 2 * PI / 3:R2 = R1: GOSUB 1000 | |
940 T1 = T + 4 * PI / 3: GOSUB 1000 | |
950 T2 = T: GOSUB 1000 | |
960 NEXT | |
970 GOTO 2000 | |
1000 REM Plot a line between polar coords (T1,R1) and (T2,R2) | |
1010 X1 = INT ( COS (T1) * R1 + XC):Y1 = INT ( SIN (T1) * R1 + YC) | |
1020 X2 = INT ( COS (T2) * R2 + XC):Y2 = INT ( SIN (T2) * R2 + YC) | |
1030 IF X1 > 279 OR X2 > 279 THEN RETURN | |
1040 IF Y1 > 191 OR Y2 > 191 THEN RETURN | |
1050 IF X1 < 0 OR X2 < 0 THEN RETURN | |
1060 IF Y1 < 0 OR Y2 < 0 THEN RETURN | |
1070 HPLOT X1,Y1 TO X2,Y2 | |
1080 RETURN | |
2000 K = PEEK (49152) - 128 | |
2010 IF K < 0 THEN 2000 | |
2020 POKE 49168,0: HGR : POKE 49234,0 | |
2030 RETURN |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment