Compucolor.org – Virtual Media

Listing of file='PLOT.BAS;01' on disk='vmedia/games-sector.ccvf'

100 DIM C(20,2),CT(20,2),L(20),M$(5),LNK(20,1),PEN(20)
105 P= .017453
110 N= - 1
111 FOR I= 0TO 5:READ M$(I):NEXT I
113 DATA "NEW VECTOR NO>","A+B","A.B","A^B","DRAW","EMPTY VECTOR"
115 PLOT 12
120 PLOT 18:PRINT "COOSE FROM THE FOLLOWING OPTIONS :"
130 PRINT
140 PRINT "1. SPECIFY VECTOR"
150 PRINT "2. VECTOR ADDITION"
160 PRINT "3. SCALAR PRODUCT"
170 PRINT "4. VECTOR PRODUCT"
180 PRINT "5. DRAW"
181 PRINT "6. ENTER CUBE"
183 PRINT "7. TRANSLATION"
185 PRINT "8. ROTATION"
187 PRINT "9. MAGNIFY"
190 PRINT
200 INPUT "OPTION REQUIRED>";O
210 ON OGOSUB 1000,2000,3000,4000,5000,6000,7000,8000,9000
215 PRINT
220 INPUT "HIT RETURN TO CONTINUE";A$
225 PLOT 12
230 GOTO 120
1000 PLOT 12
1010 PRINT SPC( 15);"VECTOR SPECIFICATION ROUTINE"
1030 PRINT
1035 FOR I= 0TO 20:N= N+ 1
1040 PRINT "VECTOR NO >";N;
1050 INPUT " ENTER COORDINATES (X,Y,Z) >";C(N,0),C(N,1),C(N,2)
1060 GOSUB 10000:IF L(N)= 0GOTO 1080
1065 GOSUB 14000
1070 NEXT I
1080 PRINT :LST= 0
1090 FOR I= 0TO 20
1100 INPUT "CONNECT VECTOR NO>";LNK(I,0)
1102 PRINT TAB( 20):PLOT 28:PRINT " TO>";:INPUT "";LNK(I,1)
1104 PRINT TAB( 29):PLOT 28:PRINT "STOP(Y/N)";:INPUT N$
1106 IF N$= "Y"GOTO 1140
1110 LST= LST+ 1
1130 NEXT I
1140 RETURN
2000 PLOT 12:PRINT SPC( 15);"VECTOR ADDITION ROUTINE"
2010 GOSUB 11000
2020 N= N+ 1
2030 INPUT "ADD OR SUBTRACT (+/-) >";A$
2035 FL= 1
2040 IF A$= "-"THEN FL= - 1
2080 FOR I= 0TO 2
2090 C(N,I)= C(A,I)+ FL* C(B,I)
2100 NEXT I
2102 GOSUB 10000:GOSUB 12000
2110 RETURN
3000 REM
3010 PLOT 12:PRINT SPC( 15);"SCALAR PRODUCT"
3020 GOSUB 11000
3050 N= N+ 1
3060 FOR I= 0TO 2
3070 C(N,I)= C(A,I)* C(B,I)
3080 NEXT I
3090 GOSUB 10000
3100 GOSUB 12000
3120 RETURN
4000 REM
4010 REM
4020 PLOT 12
4030 PRINT SPC( 15);"VECTOR PRODUCT"
4040 GOSUB 11000
4050 N= N+ 1
4060 C(N,0)= C(A,1)* C(B,2)- C(A,2)* C(B,1)
4070 C(N,1)= C(A,3)* C(B,0)- C(A,0)* C(B,3)
4080 C(N,2)= C(A,0)* C(B,1)- C(A,1)* C(B,0)
4090 GOSUB 10000
4100 GOSUB 12000
4110 RETURN
5000 REM
5010 PLOT 12
5020 FOR I= 0TO LST
5030 A= LNK(I,0):B= LNK(I,1):PLOT PEN(I)
5040 PLOT 2,C(A,0),C(A,1),242,C(B,0),C(B,1),255
5050 NEXT I
5060 PLOT 17:RETURN
6000 RESTORE 6100
6010 FOR N= 0TO 7
6020 READ C(N,0),C(N,1),C(N,2)
6030 NEXT N
6050 FOR I= 0TO 11
6060 READ LNK(I,0),LNK(I,1),PEN(I)
6070 NEXT I
6080 LST= 11
6090 RETURN
6100 DATA 34,34,34,94,34,34,94,94,34,34,94,34,34,94,94,94,94,94,94,34,94,34,34,94
6110 DATA 0,1,18,1,6,18,7,0,18,1,2,18,0,3,18,5,2,18,2,3,18,3,4,18,6,7,17,7,4,17,4,5,17,5,6,17
7000 REM
7010 PLOT 12
7020 PRINT SPC( 15)"TRANSLATION OF AXES"
7025 INPUT "NO OF STEPS >";SN
7030 GOSUB 13000
7035 FOR J= 1TO SN
7040 FOR I= 0TO N
7050 C(I,0)= C(I,0)+ A
7060 C(I,1)= C(I,1)+ B
7070 C(I,2)= C(I,2)+ C
7080 NEXT I
7090 GOSUB 5000
7100 NEXT J
7110 RETURN
8000 REM
8010 PLOT 12
8020 PRINT SPC( 15)"ROTATION OF AXES"
8030 INPUT "NO OF STEPS >";SN
8031 PRINT "ENTER ANGLES IN DEGREES"
8040 GOSUB 13000
8041 A= A* P:B= B* P:C= C* P
8042 AC= COS (A):AS= SIN (A):BC= COS (B):BS= SIN (B):CC= COS (C):CS= SIN (C)
8050 F9= AC* CC:F7= - AS* CC:F4= AC* CS:F2= - AS* CS
8060 FOR K= 1TO SN
8070 FOR I= 0TO N:FOR J= 0TO 2:CT(I,J)= C(I,J)- 64:NEXT J:NEXT I
8080 FOR I= 0TO N
8090 TE= CT(I,2)* BS
8100 C(I,0)= CT(I,0)* (F9* BC+ F2)+ CT(I,1)* (F4- F7* BC)- TE* CC
8110 C(I,1)= CT(I,0)* (F7- F4* BC)+ CT(I,1)* (F2* BC+ F9)+ TE* CS
8120 C(I,2)= CT(I,0)* AC* BS+ CT(I,1)* AS* BS+ CT(I,2)* BC
8130 NEXT I
8135 FOR I= 0TO N:FOR J= 0TO 2:C(I,J)= C(I,J)+ 64:NEXT J:NEXT I
8140 GOSUB 5000
8150 NEXT K
8160 RETURN
9000 REM
9010 PLOT 12
9020 PRINT SPC( 15)"MAGNIFICATION/SHRINKAGE"
9030 PRINT
9040 INPUT "ENTER MAG FACTOR >";X
9050 FOR I= 0TO N
9060 FOR J= 0TO 2
9070 C(I,J)= C(I,J)* X
9080 IF C(I,J)> 127THEN PRINT "FACTOR TOO LARGE":GOTO 9010
9090 NEXT J
9100 NEXT I
9110 GOSUB 5000
9120 RETURN
10000 L(N)= SQR (C(N,0)* C(N,0)+ C(N,1)* C(N,1)+ C(N,2)* C(N,2))
10010 RETURN
11000 PRINT :INPUT "FIRST VECTOR NO  >";A
11010 INPUT "SECOND VECTOR NO >";B
11020 IF A> NOR B> NTHEN PRINT "VECTOR NOT FOUND":GOTO 11000
11030 RETURN
12000 PRINT :PRINT M$(O- 1);" = VECTOR NO";N
12010 PRINT "LENGTH =";L(N)
12020 RETURN
13000 PRINT
13010 INPUT "ABOUT X-AXIS >";A
13020 INPUT "ABOUT Y-AXIS >";B
13030 INPUT "ABOUT Z-AXIS >";C
13040 RETURN
14000 REM
14010 PLOT 28,11
14020 PRINT M$(O- 1);N;" =";C(I,0);" I+";C(I,1);" J+";C(I,2);" K"
14030 RETURN