10 REM PLATONIC SOLIDS - HIRES2 - MICROWORLD BASIC 5.29
20 DIM S(35),X(19),Y(19),Z(19),E(29),F(29),P(719),Q(719)
30 RESTORE 1000
40 FOR I=0 TO 35:READ S(I):NEXT I
100 REM MENU
110 CLS
120 CURS1,1:PRINT "PLATONIC SOLIDS"
130 CURS1,3:PRINT "1 TETRAHEDRON    4 FACES"
140 CURS1,4:PRINT "2 CUBE           6 FACES"
150 CURS1,5:PRINT "3 OCTAHEDRON     8 FACES"
160 CURS1,6:PRINT "4 DODECAHEDRON  12 FACES"
170 CURS1,7:PRINT "5 ICOSAHEDRON   20 FACES"
180 CURS1,8:PRINT "6 EXIT"
190 CURS1,10:PRINT "ANY KEY STOPS THE SPIN"
200 CURS1,12:INPUT "CHOOSE 1-6";H
210 IF H=6 THEN 900
220 IF H<1 THEN 110
230 IF H>5 THEN 110
240 RESTORE 2005+H*100
250 READ O,L
260 FOR I=0 TO O-1:READ X(I),Y(I),Z(I):NEXT I
270 FOR I=0 TO L-1:READ E(I),F(I):NEXT I
300 REM WORK OUT ALL 36 FRAMES
310 CLS:CURS1,1:PRINT "CALCULATING FRAME"
320 FOR A=0 TO 35
330 K=A+9:IF K>35 THEN LET K=K-36
340 N=S(A):C=S(K)
350 B=A*2:IF B>35 THEN LET B=B-36
360 K=B+9:IF K>35 THEN LET K=K-36
370 T=S(B):D=S(K)
380 FOR I=0 TO O-1
390 U=(X(I)*C-Z(I)*N)/100
400 W=(X(I)*N+Z(I)*C)/100
410 V=(Y(I)*D-W*T)/100
420 W=(Y(I)*T+W*D)/100
430 G=(W+400)/4
440 J=A*20+I
450 P(J)=256+U*100/G
460 Q(J)=128+V*67/G
470 NEXT I
480 CURS19,1:PRINT A+1;
490 NEXT A
500 REM SPIN
510 FOR A=0 TO 35:M=A*20
520 HIRES2
530 FOR I=0 TO L-1:J=M+E(I):K=M+F(I)
540 PLOT P(J),Q(J) TO P(K),Q(K)
550 NEXT I
560 IF KEY$<>"" THEN 110
570 NEXT A
580 GOTO 510
900 CLS
910 END
1000 REM SINE X 100 FOR 0-350 DEGREES IN 10S
1010 DATA 0,17,34,50,64,77,87,94,98
1020 DATA 100,98,94,87,77,64,50,34,17
1030 DATA 0,-17,-34,-50,-64,-77,-87,-94,-98
1040 DATA -100,-98,-94,-87,-77,-64,-50,-34,-17
2100 REM TETRAHEDRON: CORNERS, EDGES, THEN X,Y,Z OF EACH CORNER, THEN EDGE PAIRS
2105 DATA 4,6
2110 DATA 69,69,69,69,-69,-69,-69,69,-69,-69,-69,69
2115 DATA 0,1,0,2,0,3,1,2,1,3,2,3
2200 REM CUBE: CORNERS, EDGES, THEN X,Y,Z OF EACH CORNER, THEN EDGE PAIRS
2205 DATA 8,12
2210 DATA -69,-69,-69,69,-69,-69,69,69,-69,-69,69,-69
2215 DATA -69,-69,69,69,-69,69,69,69,69,-69,69,69
2220 DATA 0,1,0,3,0,4,1,2,1,5,2,3,2,6,3,7
2225 DATA 4,5,4,7,5,6,6,7
2300 REM OCTAHEDRON: CORNERS, EDGES, THEN X,Y,Z OF EACH CORNER, THEN EDGE PAIRS
2305 DATA 6,12
2310 DATA 120,0,0,-120,0,0,0,120,0,0,-120,0
2315 DATA 0,0,120,0,0,-120
2320 DATA 0,2,0,3,0,4,0,5,1,2,1,3,1,4,1,5
2325 DATA 2,4,2,5,3,4,3,5
2400 REM DODECAHEDRON: CORNERS, EDGES, THEN X,Y,Z OF EACH CORNER, THEN EDGE PAIRS
2405 DATA 20,30
2410 DATA 69,69,69,69,69,-69,69,-69,69,69,-69,-69
2415 DATA -69,69,69,-69,69,-69,-69,-69,69,-69,-69,-69
2420 DATA 0,43,112,0,43,-112,0,-43,112,0,-43,-112
2425 DATA 43,112,0,43,-112,0,-43,112,0,-43,-112,0
2430 DATA 112,0,43,112,0,-43,-112,0,43,-112,0,-43
2435 DATA 0,8,0,12,0,16,1,9,1,12,1,17,2,10,2,13
2440 DATA 2,16,3,11,3,13,3,17,4,8,4,14,4,18,5,9
2445 DATA 5,14,5,19,6,10,6,15,6,18,7,11,7,15,7,19
2450 DATA 8,10,9,11,12,14,13,15,16,17,18,19
2500 REM ICOSAHEDRON: CORNERS, EDGES, THEN X,Y,Z OF EACH CORNER, THEN EDGE PAIRS
2505 DATA 12,30
2510 DATA 0,63,102,0,63,-102,0,-63,102,0,-63,-102
2515 DATA 63,102,0,63,-102,0,-63,102,0,-63,-102,0
2520 DATA 102,0,63,102,0,-63,-102,0,63,-102,0,-63
2525 DATA 0,2,0,4,0,6,0,8,0,10,1,3,1,4,1,6
2530 DATA 1,9,1,11,2,5,2,7,2,8,2,10,3,5,3,7
2535 DATA 3,9,3,11,4,6,4,8,4,9,5,7,5,8,5,9
2540 DATA 6,10,6,11,7,10,7,11,8,9,10,11
