10 '************************************************************************* 20 '***** SIMPLOT.BAS August, 1983 ***** 30 '************************************************************************* 100 DIM XA(100), YA(100) 200 DATA 10, 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10 300 READ NODP: FOR I = 1 TO NODP: READ XA(I), YA(I): NEXT I 400 XMINP = 0: XMAXP = 10: XTIK = 5: YMINP = 0: YMAXP = 10: YTIK = 5 500 XAXT$ = "X-AXIS" : YAXT$ = "Y-AXIS" 600 KEY OFF: SCREEN 2: CLS 999 '************************************************************************ 1000 'PLOT: 1 --- Point Plot, 2 --- Line Plot 1010 PLOT = 2 10000 GOSUB 20000 10010 IF PLOT = 2 THEN GOTO 10200 10100 FOR I = 1 TO NODP: X = XA(I) : Y = YA(I) : GOSUB 20001: NEXT I 10120 GOTO 10999 10200 XO = XA(1): YO = YA(1): GOSUB 20002 10210 FOR I = 2 TO NODP: X1 = XA(I): Y1 = YA(I): GOSUB 20003 : NEXT I 10999 STOP 20000 GOTO 20004 ' draw and label plot 20001 GOTO 20021 ' point plot 20002 GOTO 20025 ' line plot - initialize 20003 GOTO 20028 ' line plot - connect 20004 Z0 = XMINP: Z1 = XMAXP: Z2 = YMINP: Z3 = YMAXP 20005 ZDX = XTIK : ZDY = YTIK 20006 ZG0 = 68: ZG1 = 4 20007 ZG2 = 606: ZG3 = 180 20008 ZGDX = (ZG2 - ZG0) / ZDX: ZGDY = (ZG3 - ZG1) / ZDY: CLS 20009 LINE (ZG0, ZG1)-(ZG2, ZG3), 1, B: ZDA = 5 20010 FOR ZI = 0 TO ZDX: LINE (ZG0 + ZI * ZGDX, ZG1)-(ZG0 + ZI * ZGDX, ZG1 + ZDA), 1 20011 LINE (ZG0 + ZI * ZGDX, ZG3)-(ZG0 + ZI * ZGDX, ZG3 - ZDA), 1: NEXT 20012 FOR ZI = 0 TO ZDY: LINE (ZG0, ZG3 - ZI * ZGDY)-(ZG0 + ZDA, ZG3 - ZI * ZGDY), 1 20013 LINE (ZG2, ZG3 - ZI * ZGDY)-(ZG2 - ZDA, ZG3 - ZI * ZGDY), 1: NEXT 20014 ZTY = 22: ZTX = INT((ZG2 - ZG0) / 8 + .5): ZT0 = 1: ZT3 = 23 20015 FOR ZI = 0 TO ZDY: LOCATE ZT3 - INT(ZI * ZTY / ZDY + .5), ZT0 20016 Z = Z2 + ZI * (Z3 - Z2) / ZDY: PRINT USING "##.#^^^^"; Z; : NEXT: ZT0 = 5 20017 FOR ZI = 0 TO ZDX: LOCATE ZT3 + 1, ZT0 + INT(ZI * ZTX / ZDX + .5) 20018 Z = Z0 + ZI * (Z1 - Z0) / ZDX: PRINT USING "##.#^^^^"; Z; : NEXT 20019 LOCATE 25, INT((ZTX - LEN(XAXT$) - LEN(YAXT$) + 14) / 2) 20020 PRINT YAXT$; " vs "; XAXT$;: GOTO 20032 20021 IF X < Z0 OR X > Z1 OR Y < Z2 OR Y > Z3 THEN 20032 20022 ZX = INT((X - Z0) / (Z1 - Z0) * (ZG2 - ZG0) + ZG0) 20023 ZY = INT(ZG3 - ((Y - Z2) / (Z3 - Z2) * (ZG3 - ZG1))) 20024 CIRCLE (ZX, ZY), 1, 1: GOTO 20032 20025 IF X0 < Z0 OR X0 > Z1 OR Y0 < Z2 OR Y0 > Z3 THEN 20032 20026 ZX0 = INT((X0 - Z0) / (Z1 - Z0) * (ZG2 - ZG0) + ZG0) 20027 ZY0 = INT(ZG3 - ((Y0 - Z2) / (Z3 - Z2) * (ZG3 - ZG1))): GOTO 20032 20028 IF X1 < Z0 OR X1 > Z1 OR Y1 < Z2 OR Y1 > Z3 THEN 20032 20029 ZX1 = INT((X1 - Z0) / (Z1 - Z0) * (ZG2 - ZG0) + ZG0) 20030 ZY1 = INT(ZG3 - ((Y1 - Z2) / (Z3 - Z2) * (ZG3 - ZG1))) 20031 LINE (ZX0, ZY0)-(ZX1, ZY1), 1: ZX0 = ZX1: ZY0 = ZY1 20032 LOCATE 1, 39, 0: RETURN