'''Subroutines''' '''***********''' DECLARE SUB melo () DECLARE SUB funcupara () DECLARE SUB coorcupara () DECLARE SUB figuurtit () DECLARE SUB prefsmore () DECLARE SUB prefscol () DECLARE SUB funcirkel () DECLARE SUB funcosin () DECLARE SUB fundubhyp () DECLARE SUB funcosec () DECLARE SUB funexpon () DECLARE SUB funparab () DECLARE SUB funsino () DECLARE SUB funsinq () DECLARE SUB funtangens () DECLARE SUB afbmod3 () DECLARE SUB rotstap () DECLARE SUB schermkleur () DECLARE SUB scanmax () DECLARE SUB scanmod () DECLARE SUB tekenen () DECLARE SUB figpref () DECLARE SUB prefs () DECLARE SUB tekenxyas () DECLARE SUB tekenparm () DECLARE SUB tekencurv () DECLARE SUB tekenxyvlak () DECLARE SUB intro () DECLARE SUB tekenxy () DECLARE SUB figcurv () DECLARE SUB menu () DECLARE SUB rotkeus2 () DECLARE SUB projas2 () DECLARE SUB afbmod2 () DECLARE SUB figuur2 () DECLARE SUB scherm () DECLARE SUB figuur () DECLARE SUB tekencoord () DECLARE SUB tekenfig () DECLARE SUB rotkeus () DECLARE SUB coorcirkel () DECLARE SUB coordubhyp () DECLARE SUB coorcosec () DECLARE SUB coorexpon () DECLARE SUB coorparab () DECLARE SUB coorcosin () DECLARE SUB coorsino () DECLARE SUB coorsinq () DECLARE SUB coortan () DECLARE SUB afbmod () DECLARE SUB projas () DECLARE SUB cirkel () DECLARE SUB dubhyp () DECLARE SUB cosec () DECLARE SUB expon () DECLARE SUB parab () DECLARE SUB cosin () DECLARE SUB tangens () DECLARE SUB sino () DECLARE SUB sinq () DECLARE SUB rot1 () DECLARE SUB rot2 () DECLARE SUB rot3 () DECLARE SUB rot4 () DECLARE SUB rot5 () DECLARE SUB rot6 () DECLARE SUB rot7 () DECLARE SUB rot8 () DECLARE SUB rot9 () DECLARE SUB rot10 () DECLARE SUB rot11 () DECLARE SUB rot12 () DECLARE SUB rot13 () DECLARE SUB teken () DECLARE SUB teken2 () '''Variabelen''' '''**********''' COMMON SHARED a, b, alf, bet, cca, ccb, ssa, ssb, tta, ttb, alfr, betr COMMON SHARED pi, nrot, drot, tel, xi, nr%, scan, scr COMMON SHARED u1, u2, u3, u4, v1, v2, v3, v4 COMMON SHARED u11, u22, u33, u44, v11, v22, v33, v44 COMMON SHARED men, fig, max, xy, fac, yx, nmax, mmax, delthoek, deltx2 COMMON SHARED tit$, c$, rot$, xy$, parm$, ja$, curv$ COMMON SHARED f$(), fmen$(), ffig$(), frot$(), scr$(), mel$() COMMON SHARED afb$(), afb1$(), afb2$(), afb3$(), col(), scol(), scrcol()'''col1(), col2() COMMON SHARED x1(), x2(), y1(), y2(), u(), v() COMMON SHARED r(), rdub(), xx1sec(), xx2sec(), xx1exp() COMMON SHARED rpar(), rcupar(), xxsin1(), xxsin2(), xxtan1(), xxtan2() COMMON SHARED colm, coln, colmm, colnn, colx, coly, colxx, colyy, mel COMMON SHARED colcrv1, colcrv2, colcrv3 COMMON SHARED rij, kol, vlag, vlagxy '''Titels''' '''******''' DIM fmen$(6) fmen$(0) = " -> AFBEELDEN" fmen$(1) = " -> figuur" fmen$(2) = " -> rotatie" fmen$(3) = " -> projectieassen" fmen$(4) = " -> voorkeurinstellingen" fmen$(5) = " -> Omtrent COMPLEXITY..." fmen$(6) = " -> END" DIM ffig$(10) ffig$(0) = "-> X en Y -eenheidsassen" ffig$(1) = "-> Cirkel/Hyperbool : Y=1/X" ffig$(2) = "-> Dubbelhyperbool. : Y=1/X^2" ffig$(3) = "-> Cosecans........ : Y=1/Sin(X)" ffig$(4) = "-> Exponentieel.... : Y=e^X" ffig$(5) = "-> Parabool........ : Y=X^2" ffig$(6) = "-> Cosinus......... : Y=Cos(X)" ffig$(7) = "-> Tangens......... : Y=Sin(X)/Cos(X)" ffig$(8) = "-> Sinuoid......... : Y=Sin(2pi X)" ffig$(9) = "-> Quadsin......... : Y=Sin^2 (X)" ffig$(10) = "-> Cubische parab.. : Y=X^3" DIM frot$(13) frot$(1) = " 1 = x1-as alleen" frot$(2) = " 2 = y1-as alleen" frot$(3) = " 3 = x2-as alleen" frot$(4) = " 4 = y2-as alleen" frot$(5) = " 5 = x1-x2 vlak (X-vlak)" frot$(6) = " 6 = y1-y2 vlak (Y-vlak)" frot$(7) = " 7 = x1-y1 vlak (reeel vlak)" frot$(8) = " 8 = x2-y2 vlak (imag. vlak)" frot$(9) = " 9 = x1-y2 vlak" frot$(10) = "10 = x2-y1 vlak" frot$(11) = "11 = X-vlak + Y-vlak" frot$(12) = "12 = x1-y1 + x2-y2 vlakken" frot$(13) = "13 = x1-y2 + x2-y1 vlakken" DIM afb$(7), afb1$(7), afb2$(7) afb$(1) = "-> Beeld opbouwen" afb$(2) = "-> Parameterlijnen" afb$(3) = "-> Karakteristieke lijnen" afb$(4) = "-> X Y eenheidsvlakken" afb$(5) = "-> x y assen" afb$(6) = "-> Na ieder beeld" afb$(7) = "-> Meer..." afb1$(1) = "niet" afb1$(2) = "scannen" afb1$(3) = "tonen" afb1$(4) = "tonen" afb1$(5) = "tonen" afb1$(6) = "wachten" afb1$(7) = "" afb2$(1) = "wel" afb2$(2) = "niet scannen" afb2$(3) = "niet tonen" afb2$(4) = "niet tonen" afb2$(5) = "niet tonen" afb2$(6) = "doorgaan" afb2$(7) = "" DIM col(8), scol(9) DIM afb3$(5) afb3$(1) = "-> Kenmelodie" afb3$(2) = "-> Schermkleur" afb3$(3) = "-> Aantal rotatiebeelden" afb3$(4) = "-> Max aantal scanbeurten" afb3$(5) = "-> Scanmodi..." DIM mel$(2), scr$(4), scrcol(4) mel$(1) = "PLAY": mel$(2) = "MUTE" scr$(1) = "donker": scrcol(1) = 0 scr$(2) = "grijs ": scrcol(2) = 8 scr$(3) = "wit ": scrcol(3) = 7 scr$(4) = "helwit": scrcol(4) = 15 DIM f$(2) ''' DEFAULTinstellingen''' '''********************''' FOR i = 1 TO 8: col(i) = 7: NEXT i FOR i = 1 TO 9: scol(i) = 7: NEXT i pi = ATN(1) * 4 tit$ = "X en Y -eenheidsassen": c$ = "" nrot = 9: drot = 360 / nrot: ja$ = "": xy$ = "": curv$ = "" a = .8 alf = 55: alfr = alf * pi / 180 tta = TAN(alfr): cca = COS(alfr): ssa = SIN(alfr) b = .7 bet = -40: betr = bet * pi / 180 ttb = TAN(betr): ccb = COS(betr): ssb = SIN(betr) nr% = 4: scan = 3: scr = 1: mel = 1 '''Intro''' '''*****''' intro: CALL intro '''Hoofdmenu''' '''*********''' menu: CALL menu IF men <> 0 GOTO menu '''Dimensionering''' '''**************''' IF fig <> 0 THEN REDIM x1(mmax, nmax), x2(mmax, nmax), y1(mmax, nmax), y2(mmax, nmax) REDIM u(mmax, nmax), v(mmax, nmax) END IF '''Ruimtecoordinaten figuur''' '''***********************''' SELECT CASE fig CASE 0: max = 2: fac = 1 CASE 1: CALL coorcirkel CASE 2: CALL coordubhyp CASE 3: GOSUB datacosec: CALL coorcosec CASE 4: CALL coorexpon CASE 5: CALL coorparab CASE 6: CALL coorcosin CASE 7: GOSUB datatan: CALL coortan CASE 8: CALL coorsino CASE 9: CALL coorsinq CASE 10: CALL coorcupara END SELECT '''Projectiecoordinaten en tekenen figuur''' '''**************************************''' tel = 0 '''eerste scherm''' SELECT CASE nr% CASE 1: CALL rot1 CASE 2: CALL rot2 CASE 3: CALL rot3 CASE 4: CALL rot4 CASE 5: CALL rot5 CASE 6: CALL rot6 CASE 7: CALL rot7 CASE 8: CALL rot8 CASE 9: CALL rot9 CASE 10: CALL rot10 CASE 11: CALL rot11 CASE 12: CALL rot12 CASE 13: CALL rot13 END SELECT PLAY "o4l12d" LOCATE 1, 60: COLOR 3: PRINT "-> Druk een toets..." a$ = INPUT$(1) GOTO menu '''Data COSECANS''' '''*************''' datacosec: RESTORE leescosec FOR n = 0 TO nmax: READ xx1sec(n): NEXT n FOR m = 0 TO mmax: READ xx2sec(m): NEXT m leescosec: DATA .003,.02,.04,.05,.06,.07,.08,.1,.12,.14,.16 DATA .2,.25,.3,.4,.5,.75,1,1.25,1.5 DATA -5,-4,-3,-2,-1,-.5,-.3,-.2,-.15,-.1,-.08,-.06,-.04,-.02 DATA .0 DATA .02,.04,.06,.08,.1,.15,.2,.3,.5,1,2,3,4,5 RETURN '''Data TANGENS''' '''************''' datatan: RESTORE leestan FOR n = 0 TO nmax: READ xxtan1(n): NEXT n FOR m = 0 TO mmax: READ xxtan2(m): NEXT m leestan: DATA .1,.25,.5,.75,1,1.2,1.3,1.4,1.42,1.44,1.46,1.48 DATA 1.5,1.51,1.52,1.53,1.54,1.55,1.57 DATA -5,-4,-3,-2,-1,-.5,-.25,-.2,-.15,-.1,-.08,-.06,-.04,-.02 DATA .0 DATA .02,.04,.06,.08,.1,.15,.2,.25,.5,1,2,3,4,5 RETURN END SUB coorcirkel FOR m = 0 TO mmax FOR n = 0 TO nmax str = r(n): hoek = m * delthoek x1(m, n) = str * COS(hoek) x2(m, n) = str * SIN(hoek) y1(m, n) = (1 / str) * COS(-hoek) y2(m, n) = (1 / str) * SIN(-hoek) NEXT n NEXT m END SUB SUB coorcosec coorcosec: FOR n = 0 TO nmax FOR m = 0 TO mmax x1 = xx1sec(n) x2 = xx2sec(m) x1(m, n) = x1 x2(m, n) = x2 y2 = EXP(-x2) * COS(x1) - EXP(x2) * COS(-x1) y1 = EXP(-x2) * SIN(x1) - EXP(x2) * SIN(-x1) noem = y1 ^ 2 + y2 ^ 2 y1(m, n) = 2 * y1 / noem y2(m, n) = 2 * y2 / noem NEXT m NEXT n END SUB SUB coorcosin FOR n = 0 TO nmax FOR m = 0 TO mmax x1 = xxsin1(n): x2 = xxsin2(m) x1(m, n) = x1 x2(m, n) = x2 y1(m, n) = .5 * COS(x1) * (EXP(x2) + EXP(-x2)) y2(m, n) = -.5 * SIN(x1) * (EXP(x2) - EXP(-x2)) NEXT m NEXT n END SUB SUB coorcupara FOR m = 0 TO mmax FOR n = 0 TO nmax str = rcupar(n): hoek = m * delthoek x1(m, n) = str * COS(hoek) x2(m, n) = str * SIN(hoek) y1(m, n) = (str ^ 3) * COS(3 * hoek) y2(m, n) = (str ^ 3) * SIN(3 * hoek) NEXT n NEXT m END SUB SUB coordubhyp FOR m = 0 TO mmax FOR n = 0 TO nmax st = rdub(n): hoek = m * delthoek x1(m, n) = st * COS(hoek) x2(m, n) = st * SIN(hoek) y1(m, n) = (.125 / (st * st)) * COS(-2 * hoek) y2(m, n) = (.125 / (st * st)) * SIN(-2 * hoek) NEXT n NEXT m END SUB SUB coorexpon FOR n = 0 TO nmax FOR m = 0 TO mmax x1 = xx1exp(n) x1(m, n) = x1 x2(m, n) = -pi + m * deltx2 x2 = x2(m, n) y1(m, n) = EXP(x1) * COS(x2) y2(m, n) = EXP(x1) * SIN(x2) NEXT m NEXT n END SUB SUB coorparab FOR m = 0 TO mmax FOR n = 0 TO nmax str = rpar(n): hoek = m * delthoek x1(m, n) = str * COS(hoek) x2(m, n) = str * SIN(hoek) y1(m, n) = (str ^ 2) * COS(2 * hoek) y2(m, n) = (str ^ 2) * SIN(2 * hoek) NEXT n NEXT m END SUB SUB coorsino rb = 0: re = 1.3: argb = 0: arge = 2 * pi FOR n = 0 TO nmax FOR m = 0 TO mmax r = rb + n * (re - rb) / nmax '!!! arg = argb + m * (arge - argb) / mmax '!!! x1(m, n) = r * COS(arg): x2(m, n) = r * SIN(arg) argy = COS(2 * arg) * r ^ 2 mody = EXP(-SIN(2 * arg) * r ^ 2) y1(m, n) = (mody / 2 + 1 / (2 * mody)) * COS(argy) - 1 y2(m, n) = (mody / 2 - 1 / (2 * mody)) * SIN(argy) NEXT m NEXT n END SUB SUB coorsinq rb = 0: re = .5: argb = 0: arge = 2 * pi FOR n = 0 TO nmax FOR m = 0 TO mmax r = rb + n * (re - rb) / nmax '!!! arg = argb + m * (arge - argb) / mmax '!!! x1(m, n) = r * COS(arg): x2(m, n) = r * SIN(arg) y1(m, n) = (SIN(2 * pi * r) ^ 2) * COS(arg) y2(m, n) = (SIN(2 * pi * r) ^ 2) * SIN(arg) NEXT m NEXT n END SUB SUB coortan coortan: FOR n = 0 TO nmax FOR m = 0 TO mmax x1 = xxtan1(n) x2 = xxtan2(m) x1(m, n) = x1 x2(m, n) = x2 xi1 = EXP(-x2) * COS(x1): eta1 = EXP(-x2) * SIN(x1) xi2 = EXP(x2) * COS(-x1): eta2 = EXP(x2) * SIN(-x1) noem = (xi1 + xi2) ^ 2 + (eta1 + eta2) ^ 2 y1(m, n) = ((eta1 - eta2) * (xi1 + xi2) + (-xi1 + xi2) * (eta1 + eta2)) / noem y2(m, n) = (-xi1 ^ 2 + xi2 ^ 2 - eta1 ^ 2 + eta2 ^ 2) / noem NEXT m NEXT n END SUB SUB figuur SCREEN 12: CLS : COLOR 15 PRINT " Keuze van figuur Y=F(X), met X=x1+i*x2;Y=y1+i*y2:" PRINT " ************************************************" PRINT : COLOR 7 FOR i = 0 TO 10: LOCATE i + 4, 15: PRINT ffig$(i): NEXT i LOCATE 28, 1: COLOR 3: PRINT " >>> Kies en selecteer figuur met pijltoetsen <<<" i = fig in = i IF mel = 1 THEN PLAY "p21l21o3dp21fp21g" kiesfig: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderfig tijd = TIMER IF in < 0 THEN in = 10 IF in > 10 THEN in = 0 COLOR 7: LOCATE i + 4, 15: PRINT ffig$(i) i = in COLOR 11: LOCATE i + 4, 15: PRINT ffig$(i) verderfig: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkfig CASE CHR$(0) + "K": GOTO bewerkfig CASE CHR$(0) + "M": GOTO bewerkfig CASE CHR$(0) + "P": in = (i + 1): GOTO kiesfig CASE CHR$(0) + "H": in = (i - 1): GOTO kiesfig CASE ELSE: GOTO verderfig END SELECT bewerkfig: fig = i COLOR 15 CLS : COLOR 15 SELECT CASE fig CASE 0: tit$ = "X en Y -eenheidsassen" c$ = "" CASE 1: tit$ = "CIRKEL/HYPERBOOL Y=1/X" CALL funcirkel CASE 2 tit$ = "DUBBELHYPERBOOL Y=1/X^2" CALL fundubhyp CASE 3 tit$ = "COSECANS" CALL funcosec CASE 4 tit$ = "EXPONENTIEEL Y=EXP(X)" CALL funexpon CASE 5 tit$ = "PARABOOL Y=X*X" CALL funparab CASE 6 tit$ = "COSINUS" CALL funcosin CASE 7 tit$ = "TANGENS" CALL funtangens CASE 8 tit$ = "SINUOID Ry=SIN(2pi Rx)" CALL funsino CASE 9 tit$ = "QUADSIN Y=sin^2 (X)" CALL funsinq CASE 10 tit$ = "CUBISCHE PARABOOL Y=X^3" CALL funcupara END SELECT END SUB SUB figuurtit LOCATE 28, 1: COLOR 3 PRINT " >>> Wijzigen=andere waarde typen; bevestigen met ENTER <<<" LOCATE 1, 15: COLOR 15: PRINT tit$ LOCATE 2, 15: FOR i = 1 TO LEN(tit$): PRINT "*"; : NEXT i: PRINT : PRINT END SUB SUB funcirkel m = 0: n = 0: nmax = 0 CALL figuurtit COLOR 3 PRINT "x1 = str * COS(hoek) ; x2 = str * SIN(hoek)" PRINT "y1 = (1/str) * COS(-hoek) ; y2 = (1/str) * SIN(-hoek)" PRINT COLOR 7: PRINT "mmax = aantal parameterlijnen 'hoek' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=18) : ", mmax IF mmax = 0 THEN mmax = 18 COLOR 7: PRINT PRINT "deltr0 = stap parameterlijnen 'str' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> deltr0? (default=1) : ", deltr0 IF deltr0 = 0 THEN deltr0 = 1 COLOR 7: PRINT PRINT "1 = volle figuur" PRINT "2 = halve figuur" PRINT "4 = kwart figuur" COLOR 11: INPUT " -> Keuze ? (default=1) : ", arge IF arge = 0 THEN arge = 1 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1.15) :", fac IF fac = 0 THEN fac = 1.15 COLOR 7 arge = 2 * pi / arge delthoek = arge / mmax rstart = .2: rstop = 1 / rstart rstop = 4: str = 1 REDIM r(50) r(0) = str: tel = 0 straalcirkel: r(n) = str deltr = deltr0 * str * str / SQR(1 + str ^ 4) str = str + deltr IF str > rstop GOTO herschikcirkel tel = tel + 1 n = n + 1 GOTO straalcirkel herschikcirkel: FOR i = 1 TO n: r(n + i) = r(i): NEXT i: r(n) = r(0) FOR i = 1 TO n: r(n - i) = 1 / r(n + i): NEXT i nmax = n * 2 END SUB SUB funcosec CALL figuurtit COLOR 3 PRINT "y2 = EXP(-x2) * COS(x1) - EXP(x2) * COS(-x1)" PRINT "y1 = EXP(-x2) * SIN(x1) - EXP(x2) * SIN(-x1)" PRINT COLOR 7: PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=.02) :", fac IF fac = 0 THEN fac = .02 COLOR 7 k = 0 m = 0: n = 0: nmax = 20 - 1: mmax = 29 - 1 x1 = 0: x2 = 0: y1 = 0: y2 = 0 REDIM xx1sec(nmax), xx2sec(mmax) END SUB SUB funcosin m = 0: n = 0: nmax = 0: k = 0 CALL figuurtit COLOR 3 PRINT "= tweebladige EXPONENTIEEL:": PRINT PRINT "y1 = .5 * COS(x1) * (EXP(x2) + EXP(-x2))" PRINT "y2 = -.5 * SIN(x1) * (EXP(x2) - EXP(-x2))" PRINT COLOR 7: PRINT "ds1 = afstand parameterlijnen x1 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> ds1? (default=.3) : ", delts1 IF delts1 = 0 THEN delts1 = .3 COLOR 7: PRINT PRINT "ds2 = afstand parameterlijnen x2 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> ds2? (default=1.5) : ", delts2 IF delts2 = 0 THEN delts2 = 1.5 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1.1) :", fac IF fac = 0 THEN fac = 1.1 COLOR 7 '''Initiatie Ruimtecoordinaten''' '''***************************''' x1b = -pi: x1e = pi: x2b = -pi: x2e = pi x1 = .01: x2 = .01: deltx1 = 0: deltx2 = 0 REDIM xxsin1(50), xxsin2(50) x1cosin: xxsin1(n) = x1: deltx1 = delts1 / SQR(1 + SIN(x1) ^ 2) x1 = x1 + deltx1 IF x1 > x1e GOTO redox1cosin n = n + 1 GOTO x1cosin redox1cosin: FOR k = 1 TO n: xxsin1(n + k) = xxsin1(k): NEXT k xxsin1(n) = xxsin1(0) FOR k = 1 TO n: xxsin1(n - k) = -xxsin1(n + k): NEXT k xxsin1(0) = x1b: xxsin1(2 * n) = x1e x2cosin: xxsin2(m) = x2 deltx2 = 2 * delts2 / SQR(EXP(-2 * x2) + EXP(2 * x2) + 2 * EXP(-x2) * EXP(x2) + 4) x2 = x2 + deltx2 IF x2 > x2e GOTO redox2cosin m = m + 1 GOTO x2cosin redox2cosin: FOR k = 1 TO m: xxsin2(m + k) = xxsin2(k): NEXT k xxsin2(m) = xxsin2(0) FOR k = 1 TO m: xxsin2(m - k) = -xxsin2(m + k): NEXT k xxsin2(0) = x2b: xxsin2(2 * m) = x2e nmax = n * 2: mmax = m * 2 END SUB SUB funcupara m = 0: n = 0: nmax = 0 CALL figuurtit COLOR 3 PRINT "x1 = str * COS(hoek) ; x2 = str * SIN(hoek)" PRINT "y1 = (str ^ 3) * COS(3 * hoek)" PRINT "y2 = (str ^ 3) * SIN(3 * hoek)" PRINT COLOR 7: PRINT "mmax = aantal parameterlijnen 'hoek' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=36) : ", mmax IF mmax = 0 THEN mmax = 36 COLOR 7: PRINT PRINT "deltr0 = stap parameterlijnen 'str' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> deltr0? (default=1) : ", deltr0 IF deltr0 = 0 THEN deltr0 = 1 COLOR 7: PRINT PRINT "3 = volle figuur" PRINT "2 = 2/3 figuur" PRINT "1 = 1/3 figuur" COLOR 11: INPUT " -> Keuze ? (default=3) : ", arge IF arge = 0 THEN arge = 3 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1.2) :", fac IF fac = 0 THEN fac = 1.2 COLOR 7 '''Initiatie Ruimtecoordinaten''' '''***************************''' rstart = 0!: rstop = 2!: deltr = 0!: str = rstart REDIM rcupar(50) arge = 2 * pi * arge / 3 delthoek = arge / mmax straalcupara: rcupar(n) = str: deltr = deltr0 / SQR(1 + 9 * str ^ 4) deltr = deltr * (str + .1) '''=fijner rond 0-punt str = str + deltr IF str > rstop THEN nmax = n: EXIT SUB n = n + 1 GOTO straalcupara END SUB SUB fundubhyp m = 0: n = 0: nmax = 0 CALL figuurtit COLOR 3 PRINT "Y = .125 / X^2 , of" PRINT "x1 = str * COS(hoek) ; x2 = str * SIN(hoek)" PRINT "y1 = (.125 / (str * str)) * COS(-2 * hoek)" PRINT "y2 = (.125 / (str * str)) * SIN(-2 * hoek)" PRINT COLOR 7: PRINT "mmax = aantal parameterlijnen 'hoek' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=36) : ", mmax IF mmax = 0 THEN mmax = 36 COLOR 7: PRINT PRINT "deltr0 = stap parameterlijnen 'str' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> deltr0? (default=.5) : ", deltr0 IF deltr0 = 0 THEN deltr0 = .5 COLOR 7: PRINT PRINT "1 = volle figuur" PRINT "2 = halve figuur" PRINT "4 = kwart figuur" COLOR 11: INPUT " -> Keuze ? (default=1) : ", arge IF arge = 0 THEN arge = 1 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1) :", fac IF fac = 0 THEN fac = 1 COLOR 7 arge = 2 * pi / arge delthoek = arge / mmax rstart = .2: rstop = 3.5: str = rstart REDIM rdub(50) straaldubhyp: rdub(n) = str: deltr = deltr0 * 4 * str ^ 3 / SQR(16 * str ^ 6 + 1) str = str + deltr IF str > rstop THEN nmax = n: EXIT SUB n = n + 1 GOTO straaldubhyp END SUB SUB funexpon m = 0: n = 0: nmax = 0 CALL figuurtit COLOR 3 PRINT "y1 = EXP(x1) * COS(x2)" PRINT "y2 = EXP(x1) * SIN(x2)" PRINT COLOR 7: PRINT "mmax = aantal parameterlijnen x2 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=8) : ", mmax IF mmax = 0 THEN mmax = 8 deltx2 = 2 * pi / mmax COLOR 7: PRINT PRINT "deltx1 = stap parameterlijnen x1 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> deltx1? (default=1) : ", deltx1 IF deltx1 = 0 THEN deltx1 = 1 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1.2) :", fac IF fac = 0 THEN fac = 1.2 COLOR 7 '''Initiatie Ruimtecoordinaten''' '''***************************''' x1b = -4: x1e = 2: x2b = -pi: x2e = pi REDIM xx1exp(50) x1 = x1b x1expon: xx1exp(n) = x1: deltx = deltx1 / SQR(1 + EXP(2 * x1)) x1 = x1 + deltx IF x1 > x1e THEN nmax = n: EXIT SUB n = n + 1 GOTO x1expon END SUB SUB funparab m = 0: n = 0: nmax = 0 CALL figuurtit COLOR 3 PRINT "x1 = str * COS(hoek) ; x2 = str * SIN(hoek)" PRINT "y1 = (str ^ 2) * COS(2 * hoek)" PRINT "y2 = (str ^ 2) * SIN(2 * hoek)" PRINT COLOR 7: PRINT "mmax = aantal parameterlijnen 'hoek' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=24) : ", mmax IF mmax = 0 THEN mmax = 24 COLOR 7: PRINT PRINT "deltr0 = stap parameterlijnen 'str' (= fijnmazigheid figuur)" COLOR 11: INPUT " -> deltr0? (default=.4) : ", deltr0 IF deltr0 = 0 THEN deltr0 = .4 COLOR 7: PRINT PRINT "1 = volle figuur" PRINT "2 = halve figuur" PRINT "4 = kwart figuur" COLOR 11: INPUT " -> Keuze ? (default=1) : ", arge IF arge = 0 THEN arge = 1 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1.2) :", fac IF fac = 0 THEN fac = 1.2 COLOR 7 '''Initiatie Ruimtecoordinaten''' '''***************************''' rstart = 0!: rstop = 2!: deltr = 0!: str = rstart REDIM rpar(50) arge = 2 * pi / arge delthoek = arge / mmax straalparab: ''' rpar(n) = str: deltr = deltr0 * 2 * str ^ 2 / SQR(4 * str ^ 4 + 1) rpar(n) = str: deltr = deltr0 / SQR(1 + 4 * str ^ 2) str = str + deltr IF str > rstop THEN nmax = n: EXIT SUB n = n + 1 GOTO straalparab END SUB SUB funsino m = 0: n = 0 CALL figuurtit COLOR 3 PRINT "x1 = r * COS(arg): x2 = r * SIN(arg)" PRINT "argy = COS(2 * arg) * r ^ 2" PRINT "mody = EXP(-SIN(2 * arg) * r ^ 2)" PRINT "y1 = (mody / 2 + 1 / (2 * mody)) * COS(argy) - 1" PRINT "y2 = (mody / 2 - 1 / (2 * mody)) * SIN(argy)" PRINT COLOR 7: PRINT "nmax = aantal parameterlijnen x1 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> nmax? (default=12) : ", nmax IF nmax = 0 THEN nmax = 12 COLOR 7: PRINT PRINT "mmax = aantal parameterlijnen x2 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=72) : ", mmax IF mmax = 0 THEN mmax = 72 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1) :", fac IF fac = 0 THEN fac = 1 COLOR 7 END SUB SUB funsinq m = 0: n = 0 CALL figuurtit COLOR 3 PRINT "x1 = r * COS(arg): x2 = r * SIN(arg)" PRINT "y1 = (SIN(2 * pi * r) ^ 2) * COS(arg)" PRINT "y2 = (SIN(2 * pi * r) ^ 2) * SIN(arg)" PRINT COLOR 7: PRINT "nmax = aantal parameterlijnen x1 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> nmax? (default=18) : ", nmax IF nmax = 0 THEN nmax = 18 COLOR 7: PRINT PRINT "mmax = aantal parameterlijnen x2 (= fijnmazigheid figuur)" COLOR 11: INPUT " -> mmax? (default=18) : ", mmax IF mmax = 0 THEN mmax = 18 COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=1) :", fac IF fac = 0 THEN fac = 1 COLOR 7 END SUB SUB funtangens CALL figuurtit COLOR 3 PRINT "xi1 = EXP(-x2) * COS(x1): eta1 = EXP(-x2) * SIN(x1)" PRINT "xi2 = EXP(x2) * COS(-x1): eta2 = EXP(x2) * SIN(-x1)" PRINT "noem = (xi1 + xi2) ^ 2 + (eta1 + eta2) ^ 2" PRINT "y1 = ((eta1 - eta2) * (xi1 + xi2) + (-xi1 + xi2) * (eta1 + eta2)) / noem" PRINT "y2 = (-xi1 ^ 2 + xi2 ^ 2 - eta1 ^ 2 + eta2 ^ 2) / noem" PRINT : COLOR 7: PRINT PRINT "fac = aanpassingsfactor schermafmetingen :" COLOR 11: INPUT " -> fac ? (default=.0075) :", fac IF fac = 0 THEN fac = .0075 COLOR 7 m = 0: n = 0: k = 0 nmax = 19 - 1: mmax = 29 - 1 x1 = 0: x2 = 0: y1 = 0: y2 = 0 xi1 = 0: xi2 = 0: eta1 = 0: eta2 = 0: noem = 0 REDIM xxtan1(nmax), xxtan2(mmax) END SUB SUB intro SCREEN 12: CLS : COLOR 11 IF mel = 1 THEN PLAY "p18l18o3cdfa>c" PRINT "Welkom in 2D COMPLEXITY land ! >1/4" COLOR 7: PRINT : PRINT PRINT "Dit is een variatie van "; : COLOR 11: PRINT "4D REALITY land" PRINT : COLOR 7 PRINT "Het herbergt complexe functies van het type Y=F(X)" PRINT "In reality land komen die overeen met koppels functies" PRINT "y1=f1(x1,x2); y2=f2(x1,x2), waarbij X=x1+i*x2, Y=y1+i*y2" PRINT PRINT "Complexity land (X,Y) is dus een broertje van" PRINT "reality land (x1,x2,y1,y2)" PRINT PRINT "De functie F stelt een 1D part (een kromme) voor van 2D complexity land," PRINT "dus haar evenknie (f1,f2) een 2D part (een oppervlak) in 4D reality land" PRINT PRINT "Geometrisch niet uit te beelden denkt men dan, want 4D..." PRINT "Het volstaat echter eraan te denken om dezelfde techniek" PRINT "toe te passen als voor 3D vlakken op papier:" PRINT "het traceren van twee families krommen van het oppervlak" PRINT PRINT "Vooraf bepalen we wel de projecties van de assen" PRINT "x1,x2,y1,y2 op het papiervlak (u,v) (welke assen we " PRINT "in eerste instantie doen samenvallen met die van het " PRINT "reele vlak x1,y1)" LOCATE 28, 15: COLOR 3: PRINT ">>> druk een toets <<<" SLEEP: a$ = INKEY$ CLS : COLOR 11 IF mel = 1 THEN PLAY "l18o3g" PRINT "Welkom in 2D COMPLEXITY land ! >2/4" COLOR 7: PRINT : PRINT PRINT "Om nu de figuur voor te stellen moeten we de FUNCTIE F," PRINT "oftewel de functies f1 en f2 specifieren" PRINT PRINT "Vervolgens moeten we geschikte parameterkrommen vinden" PRINT "Dit is een kwestie van uitproberen, voor elke FUNCTIE" PRINT "Het resultaat is de berekening van twee " PRINT "parameterfamilies m en n, zodat x1=x1(m,n), x2=x2(m,n)," PRINT "en bijhorende y1(m,n) en y2(m,n) waarden een netwerk" PRINT "van coordinaten gaan vormen" PRINT PRINT "Nu gaan we de figuur afbeelden, en ze daarbij doen roteren" PRINT "Als rotatievlak nemen we een willekeurig paar assen" PRINT "uit het viertal x1,x2,y1,y2" PRINT "We kunnen ook twee vlakken tegelijk roteren" PRINT "Op die manier zijn er dertien rotaties mogelijk" PRINT PRINT "Deze rotaties kunnen worden afgebeeld als 'nulfiguur'" PRINT "ttz als geen andere figuur is geselecteerd" PRINT PRINT "Tenslotte kunnen nog lengte en hoek van de " PRINT "projectieassen x2 en y2 worden gewijzigd" LOCATE 28, 15: COLOR 3: PRINT ">>> druk een toets <<<" SLEEP: a$ = INKEY$ CLS : COLOR 11 IF mel = 1 THEN PLAY "l18o3e" PRINT "Welkom in 2D COMPLEXITY land ! >3/4" COLOR 7: PRINT : PRINT PRINT "Zoals mag worden verwacht blijkt bij het afbeelden van een" PRINT "complexe FUNCTIE dat algebraisch verwante reele functies hier" PRINT "deelverzamelingen van zijn" PRINT PRINT "Zo blijken cirkel en hyperbool (algebraisch-complex identiek)" PRINT "parameterkrommen te zijn van de complexe CIRKEL (of HYPERBOOL)" PRINT "Andere voorbeelden zijn, voor de COSINUS: de cosinus, de cosh" PRINT "en de sinh (hyperbolische sin en cos);" PRINT "voor de TANGENS: de tan, tanh en cotanh; enzovoort" PRINT PRINT "Optioneel kunnen deze specifieke krommen extra worden belicht," PRINT "naargelang de figuur" PRINT PRINT "Andere opties, ongeacht de figuur, omvatten " PRINT "het aantal stappen per rotatie," PRINT "het al dan niet stoppen na elk beeld," PRINT "het al dan niet tonen van de eenheidsassen of -vlakken" PRINT "het al dan niet scannen van de parameterkrommen" LOCATE 28, 15: COLOR 3: PRINT ">>> druk een toets <<<" SLEEP: a$ = INKEY$ CLS : COLOR 11 IF mel = 1 THEN PLAY "l18o3c" PRINT "Welkom in 2D COMPLEXITY land ! >4/4" PRINT : PRINT : COLOR 15 PRINT "Veel plezier met het bewonderen van 4D objecten!!!" PRINT : PRINT : COLOR 7 PRINT "PS: Wie hierover meer ideeen heeft of anderszins" PRINT "creatieve wiskunde bedrijft wordt vriendelijk uitgenodigd" PRINT "over zijn bevindingen te corresponderen met de auteur " PRINT : COLOR 10 LOCATE 25, 14 PRINT "Credits: guido wuyts 1995" LOCATE 28, 15: COLOR 3: PRINT ">>> druk een toets <<<" SLEEP: a$ = INKEY$: a$ = "" END SUB SUB melo COLOR 11 kiesmelo: IF mel < 1 THEN mel = 2 IF mel > 2 THEN mel = 1 LOCATE 4, 48: PRINT mel$(mel) Verdermelo: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkmelo CASE CHR$(0) + "P": mel = mel - 1: GOTO kiesmelo CASE CHR$(0) + "H": mel = mel + 1: GOTO kiesmelo CASE CHR$(0) + "K": mel = mel - 1: GOTO kiesmelo CASE CHR$(0) + "M": mel = mel + 1: GOTO kiesmelo CASE ELSE: GOTO Verdermelo END SELECT bewerkmelo: COLOR 7 LOCATE 4, 48: PRINT mel$(mel) END SUB SUB menu SCREEN 12 CLS : COLOR 15 LOCATE 1, 16: PRINT tit$ c$ = "": FOR i = 1 TO LEN(tit$): c$ = c$ + "*": NEXT i LOCATE 2, 16: PRINT c$ mentot = 6 COLOR 7: FOR i = 0 TO mentot: LOCATE i + 4, 14: PRINT fmen$(i): NEXT i LOCATE 28, 1: COLOR 3: PRINT " >>> Kies en selecteer optie met pijltoetsen <<<" jn = 0: j = 0 IF mel = 1 THEN PLAY "l21o3cp21gp21>c" kiesmenu: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verdermenu tijd = TIMER IF jn = -1 THEN jn = mentot COLOR 7: LOCATE j + 4, 14: PRINT fmen$(j) j = jn COLOR 11: LOCATE j + 4, 14: PRINT fmen$(j) verdermenu: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkmenu CASE CHR$(0) + "K": GOTO bewerkmenu CASE CHR$(0) + "M": GOTO bewerkmenu CASE CHR$(0) + "P": jn = (j + 1) MOD (mentot + 1): GOTO kiesmenu CASE CHR$(0) + "H": jn = (j - 1) MOD (mentot + 1): GOTO kiesmenu CASE ELSE: GOTO verdermenu END SELECT bewerkmenu: men = j SELECT CASE men CASE 0 COLOR 3: LOCATE 28, 5: PRINT " >>> Even geduld... " COLOR 15: LOCATE 25, 5: PRINT " >>> Berekening van figuur <<< " CALL prefscol EXIT SUB CASE 1: CALL figuur: EXIT SUB CASE 2: CALL rotkeus: EXIT SUB CASE 3: CALL projas: EXIT SUB CASE 4: CALL prefs: EXIT SUB CASE 5: CALL intro CASE ELSE '''(mentot = -> END) ''' IF mel = 1 THEN PLAY "l21o3c" LOCATE 28, 1: COLOR 0: PRINT " >>> Kies optie met cursortoetsen <<<" LOCATE 28, 1: COLOR 3 COLOR 3: LOCATE 28, 5: PRINT " >>> ENTER = Niet stoppen <<< " COLOR 15: LOCATE 25, 5: PRINT " Bent u zeker ?" SLEEP: a$ = INKEY$ IF a$ <> CHR$(13) THEN IF mel = 1 THEN PLAY "p18l18o4c>> Kies en selecteer optie met pijltoetsen <<<" IF mel = 1 THEN PLAY "l21o3cp21gp21>c" GOTO verdermenu END SELECT END SUB SUB prefs SCREEN 12: CLS : COLOR 15 PRINT " Voorkeurinstellingen " PRINT " ********************" LOCATE 28, 1: COLOR 3 PRINT " >>> Kies en toggel optie met pijltoetsen; bevestig met ENTER <<<" COLOR 7 FOR i = 1 TO 7: LOCATE 3 + i, 15: PRINT afb$(i): NEXT i FOR i = 1 TO 7: LOCATE 3 + i, 45: COLOR col(i): PRINT afb1$(i): NEXT i FOR i = 1 TO 7: LOCATE 3 + i, 55: COLOR 18 - col(i): PRINT afb2$(i): NEXT i i = 1 in = i IF mel = 1 THEN PLAY "p21l21o3fp21gp21c" kiesafb: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderafb tijd = TIMER IF in < 1 THEN in = 7 IF in > 7 THEN in = 1 COLOR 7: LOCATE i + 3, 15: PRINT afb$(i) i = in COLOR 11: LOCATE i + 3, 15: PRINT afb$(i) verderafb: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): EXIT SUB '''GOTO bewerkafb CASE CHR$(0) + "K": GOTO bewerkafb CASE CHR$(0) + "M": GOTO bewerkafb CASE CHR$(0) + "P": in = (i + 1): GOTO kiesafb CASE CHR$(0) + "H": in = (i - 1): GOTO kiesafb CASE ELSE: GOTO verderafb END SELECT bewerkafb: col(i) = 18 - col(i) LOCATE 3 + i, 45: COLOR col(i): PRINT afb1$(i) LOCATE 3 + i, 55: COLOR 18 - col(i): PRINT afb2$(i) IF i = 7 THEN CALL prefsmore: EXIT SUB GOTO verderafb END SUB SUB prefscol IF scr < 3 THEN colm = 6: coln = 3: colmm = 12: colnn = 11 colx = 11: coly = 13 colcrv1 = 10: colcrv2 = 9: colcrv3 = 14 ELSE colm = 4: coln = 1: colmm = 14: colnn = 11 colx = 3: coly = 5 colcrv1 = 2: colcrv2 = 13: colcrv3 = 12 END IF END SUB SUB prefsmore SCREEN 12: CLS : COLOR 15 PRINT " Voorkeurinstellingen (vervolg)" PRINT " ******************************" LOCATE 28, 1: COLOR 3 PRINT " >>> Kies en wijzig optie met pijltoetsen; bevestig met ENTER <<<" COLOR 7 FOR i = 1 TO 5: LOCATE 3 + i, 15: PRINT afb3$(i): NEXT i LOCATE 4, 48: PRINT mel$(mel) LOCATE 5, 48: PRINT scr$(scr) LOCATE 6, 45: PRINT USING "#### x ####.##ø"; nrot; drot LOCATE 7, 45: PRINT USING "#### "; scan i = 1 in = i IF mel = 1 THEN PLAY "p21l21o3fp21gp21c" kiesafb3: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderafb3 tijd = TIMER IF in < 1 THEN in = 5 IF in > 5 THEN in = 1 COLOR 7: LOCATE i + 3, 15: PRINT afb3$(i) i = in COLOR 11: LOCATE i + 3, 15: PRINT afb3$(i) verderafb3: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): EXIT SUB CASE CHR$(0) + "K": GOTO bewerkafb3 CASE CHR$(0) + "M": GOTO bewerkafb3 CASE CHR$(0) + "P": in = (i + 1): GOTO kiesafb3 CASE CHR$(0) + "H": in = (i - 1): GOTO kiesafb3 CASE ELSE: GOTO verderafb3 END SELECT bewerkafb3: SELECT CASE i CASE 1: CALL melo CASE 2: CALL schermkleur CASE 3: CALL rotstap CASE 4: CALL scanmax CASE 5: CALL scanmod END SELECT GOTO verderafb3 END SUB SUB projas CLS : SCREEN 12 xy = 1.3: WINDOW (-2 * xy, -2)-(2 * xy, 2) COLOR 15: PRINT " Keuze projectieassen "; : COLOR 11: PRINT "x2 "; : COLOR 15: PRINT "en "; : COLOR 13: PRINT "y2 " COLOR 15: PRINT " *****************************" LOCATE 26, 1: COLOR 3 PRINT " >>> Wijzig lengte met '+' en '-' <<<" PRINT " >>> hoek met cursortoetsen <<<" PRINT " >>> bevestig met ENTER <<<" LOCATE 7, 1: COLOR 7: PRINT "Len y2 = "; : PRINT USING "#.##"; b LOCATE 8, 1: PRINT "Arg y2 = "; : PRINT USING "#### ø"; bet IF mel = 1 THEN PLAY "p21l21o3gp21fp21e" 'x2-as '***** an = a: alfr = alf * pi / 180: alfn = alf kiesalf: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderalf tijd = TIMER IF an < 0 THEN an = 0 LINE (0, 0)-(a * COS(alfr), a * SIN(alfr)), 0 alf = alfn: a = an: alfr = alf * pi / 180 LOCATE 4, 1: COLOR 7: PRINT "Len x2 = "; : COLOR 11: PRINT USING "#.##"; a LOCATE 5, 1: COLOR 7: PRINT "Arg x2 = "; : COLOR 11: PRINT USING "#### ø"; alf LINE (0, 0)-(0, 1), 7: LINE (0, 0)-(1, 0), 3 LINE (0, 0)-(b * ccb, b * ssb), 7 LINE (0, 0)-(a * COS(alfr), a * SIN(alfr)), 11 verderalf: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13) GOTO bewerkalf CASE CHR$(0) + "K": alfn = alf - 1: GOTO kiesalf CASE CHR$(0) + "M": alfn = alf + 1: GOTO kiesalf CASE CHR$(0) + "P": alfn = alf - 10: GOTO kiesalf CASE CHR$(0) + "H": alfn = alf + 10: GOTO kiesalf CASE "-": an = a - .05: GOTO kiesalf CASE "+": an = a + .05: GOTO kiesalf CASE ELSE: GOTO verderalf END SELECT bewerkalf: alfr = alf * pi / 180 tta = TAN(alfr): cca = COS(alfr): ssa = SIN(alfr) 'y2-as '***** bn = b betr = bet * pi / 180: betn = bet kiesbet: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderbet tijd = TIMER IF bn < 0 THEN bn = 0 LINE (0, 0)-(b * COS(betr), b * SIN(betr)), 0 bet = betn: b = bn: betr = bet * pi / 180 LOCATE 7, 1: COLOR 7: PRINT "Len y2 = "; : COLOR 13: PRINT USING "#.##"; b LOCATE 8, 1: COLOR 7: PRINT "Arg y2 = "; : COLOR 13: PRINT USING "#### ø"; bet LINE (0, 0)-(0, 1), 5: LINE (0, 0)-(1, 0), 7 LINE (0, 0)-(a * cca, a * ssa), 7 LINE (0, 0)-(b * COS(betr), b * SIN(betr)), 13 verderbet: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13) GOTO bewerkbet CASE CHR$(0) + "K": betn = bet - 1: GOTO kiesbet CASE CHR$(0) + "M": betn = bet + 1: GOTO kiesbet CASE CHR$(0) + "P": betn = bet - 10: GOTO kiesbet CASE CHR$(0) + "H": betn = bet + 10: GOTO kiesbet CASE "-": bn = b - .05: GOTO kiesbet CASE "+": bn = b + .05: GOTO kiesbet CASE ELSE: GOTO verderbet END SELECT bewerkbet: betr = bet * pi / 180 ttb = TAN(betr): ccb = COS(betr): ssb = SIN(betr) END SUB SUB rot1 rot$ = "rotatie 1: x1-as alleen" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci: v1 = ssi u2 = a * cca: v2 = a * ssa u3 = 0: v3 = 1 u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''(u,v)''' CALL tekenen '''figuur FOR xi''' END SELECT NEXT xi END SUB SUB rot10 rot$ = "rotatie 10: x2-y1 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 u2 = a * cca * cci: v2 = a * ssa * cci + ssi u3 = -a * cca * ssi: v3 = -a * ssa * ssi + cci u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot11 rot$ = "rotatie 11: X-vlak & Y-vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci + a * cca * ssi: v1 = a * ssa * ssi u2 = -ssi + a * cca * cci: v2 = a * ssa * cci u3 = b * ccb * ssi: v3 = cci + b * ssb * ssi u4 = b * ccb * cci: v4 = -ssi + b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot12 rot$ = "rotatie 12: x1-y1 & x2-y2 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci: v1 = ssi u2 = a * cca * cci + b * ccb * ssi: v2 = a * ssa * cci + b * ssb * ssi u3 = -ssi: v3 = cci u4 = -a * cca * ssi + b * ccb * cci: v4 = -a * ssa * ssi + b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot13 rot$ = "rotatie 13: x1-y2 & x2-y1 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci + b * ccb * ssi: v1 = b * ssb * ssi u2 = a * cca * cci: v2 = a * ssa * cci + ssi u3 = -a * cca * ssi: v3 = -a * ssa * ssi + cci u4 = -ssi + b * ccb * cci: v4 = b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot2 rot$ = "rotatie 2: y1-as alleen" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 u2 = a * cca: v2 = a * ssa u3 = -ssi: v3 = cci u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot3 rot$ = "rotatie 3: x2-as alleen" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 u2 = a * COS(alfr + xxi): v2 = a * SIN(alfr + xxi) u3 = 0: v3 = 1 u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot4 rot$ = "rotatie 4: y2-as alleen" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 u2 = a * cca: v2 = a * ssa u3 = 0: v3 = 1 u4 = b * COS(betr + xxi): v4 = b * SIN(betr + xxi) SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot5 rot$ = "rotatie 5: X-vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci + a * cca * ssi: v1 = a * ssa * ssi u2 = -ssi + a * cca * cci: v2 = a * ssa * cci u3 = 0: v3 = 1 u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot6 rot$ = "rotatie 6: Y-vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 u2 = a * cca: v2 = a * ssa u3 = b * ccb * ssi: v3 = cci + b * ssb * ssi u4 = b * ccb * cci: v4 = -ssi + b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot7 rot$ = "rotatie 7: x1-y1 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci: v1 = ssi u2 = a * cca: v2 = a * ssa u3 = -ssi: v3 = cci u4 = b * ccb: v4 = b * ssb SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot8 rot$ = "rotatie 8: x2-y2 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = 1: v1 = 0 ''' vaste as u2 = a * cca * cci + b * ccb * ssi: v2 = a * ssa * cci + b * ssb * ssi u3 = 0: v3 = 1 ''' vaste as u4 = -a * cca * ssi + b * ccb * cci: v4 = -a * ssa * ssi + b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rot9 rot$ = "rotatie 9: x1-y2 vlak" FOR xi = 0 TO 360 STEP drot xxi = xi * pi / 180 ssi = SIN(xxi): cci = COS(xxi) u1 = cci + b * ccb * ssi: v1 = b * ssb * ssi u2 = a * cca: v2 = a * ssa u3 = 0: v3 = 1 u4 = -ssi + b * ccb * cci: v4 = b * ssb * cci SELECT CASE fig CASE 0: CALL tekenxy '''assen X en Y''' CASE ELSE: CALL tekencoord '''u,v''' CALL tekenen '''figuur(xi)''' END SELECT NEXT xi END SUB SUB rotkeus SCREEN 12 CLS : COLOR 15 PRINT " Keuze van type rotatie :" PRINT " ************************" PRINT : COLOR 7 FOR i = 1 TO 13: LOCATE i + 4, 15: PRINT frot$(i): NEXT i PRINT LOCATE 28, 1: COLOR 3: PRINT " >>> Kies rotatienr. met cursortoetsen <<<" i = nr%: in = i IF mel = 1 THEN PLAY "l21o3ap21fp21d" kiesrot: IF in = 0 THEN in = 13 COLOR 7: LOCATE i + 4, 15: PRINT frot$(i) i = in COLOR 11: LOCATE i + 4, 15: PRINT frot$(i) Verderrot: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkrot CASE CHR$(0) + "K": GOTO bewerkrot CASE CHR$(0) + "M": GOTO bewerkrot CASE CHR$(0) + "P": in = (i + 1) MOD 13: GOTO kiesrot CASE CHR$(0) + "H": in = (i - 1) MOD 13: GOTO kiesrot CASE ELSE: GOTO Verderrot END SELECT bewerkrot: nr% = i END SUB SUB rotstap COLOR 3 LOCATE 20, 1 PRINT "> lagere waarden (minder stappen) voor afbeelden figuren" PRINT "> hogere (meer stappen) voor afbeelden eenheidsassen" PRINT "> druk op ESCAPE tijdens opbouw figuur om een reeks te onderbreken" COLOR 11 kiesstap: IF nrot <= 0 THEN nrot = 1 IF nrot > 360 THEN nrot = 360 drot = (360 / nrot) LOCATE 6, 45: PRINT USING "#### x ####.##ø"; nrot; drot Verderstap: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkstap CASE CHR$(0) + "P": nrot = nrot - 10: GOTO kiesstap CASE CHR$(0) + "H": nrot = nrot + 10: GOTO kiesstap CASE CHR$(0) + "K": nrot = nrot - 1: GOTO kiesstap CASE CHR$(0) + "M": nrot = nrot + 1: GOTO kiesstap CASE ELSE: GOTO Verderstap END SELECT bewerkstap: COLOR 7 LOCATE 6, 45: PRINT USING "#### x ####.##ø"; nrot; drot COLOR 0 LOCATE 20, 1 PRINT "> lagere waarden (minder stappen) voor afbeelden figuren" PRINT "> hogere (meer stappen) voor afbeelden eenheidsassen" PRINT "> druk op ESCAPE tijdens opbouw figuur om een reeks te onderbreken" END SUB SUB scanmax COLOR 11 kiesscan: IF scan <= 0 THEN scan = 1 IF scan > 9 THEN scan = 9 LOCATE 7, 45: PRINT USING "#### "; scan Verderscan: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkscan CASE CHR$(0) + "P": scan = scan - 1: GOTO kiesscan CASE CHR$(0) + "H": scan = scan + 1: GOTO kiesscan CASE CHR$(0) + "K": scan = scan - 1: GOTO kiesscan CASE CHR$(0) + "M": scan = scan + 1: GOTO kiesscan CASE ELSE: GOTO Verderscan END SELECT bewerkscan: COLOR 7 LOCATE 7, 45: PRINT USING "#### "; scan END SUB SUB scanmod COLOR 15 LOCATE 11, 1: PRINT " Scanbeurt: Gescande lijnen:" COLOR 7 FOR i = 1 TO 9: LOCATE 12 + i, 19: PRINT USING ">##"; i: NEXT i FOR i = 1 TO 9: LOCATE 12 + i, 29: COLOR scol(i): PRINT "wissen": NEXT i FOR i = 1 TO 9: LOCATE 12 + i, 39: COLOR 18 - scol(i): PRINT "herstellen": NEXT i i = 1 in = i kiesscmod: IF INKEY$ = a$ AND TIMER - tijd < .1 GOTO verderscmod tijd = TIMER IF in < 1 THEN in = 9 IF in > 9 THEN in = 1 COLOR 7: LOCATE 12 + i, 19: PRINT USING ">##"; i i = in COLOR 11: LOCATE 12 + i, 19: PRINT USING ">##"; i verderscmod: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13) COLOR 0 LOCATE 11, 1: PRINT " Scanbeurt: Gescande lijnen:" FOR i = 1 TO 9: LOCATE 12 + i, 19: PRINT USING ">##"; i: NEXT i FOR i = 1 TO 9: LOCATE 12 + i, 29: PRINT "wissen": NEXT i FOR i = 1 TO 9: LOCATE 12 + i, 39: PRINT "herstellen": NEXT i EXIT SUB '''GOTO bewerkafb CASE CHR$(0) + "K": GOTO bewerkscmod CASE CHR$(0) + "M": GOTO bewerkscmod CASE CHR$(0) + "P": in = (i + 1): GOTO kiesscmod CASE CHR$(0) + "H": in = (i - 1): GOTO kiesscmod CASE ELSE: GOTO verderscmod END SELECT bewerkscmod: scol(i) = 18 - scol(i) LOCATE 12 + i, 29: COLOR scol(i): PRINT "wissen" LOCATE 12 + i, 39: COLOR 18 - scol(i): PRINT "herstellen" GOTO verderscmod END SUB SUB scherm PLAY "o4l12d" SCREEN 12 yx = 1.3 '''behoud X/Y verhoudingen''' WINDOW (-max * yx, -max)-(max * yx, max) END SUB SUB schermkleur COLOR 11 kiesscrn: IF scr < 1 THEN scr = 1 IF scr > 4 THEN scr = 4 LOCATE 5, 48: PRINT scr$(scr) Verderscrn: SLEEP: a$ = INKEY$ SELECT CASE a$ CASE CHR$(13): GOTO bewerkscrn CASE CHR$(0) + "P": scr = scr - 1: GOTO kiesscrn CASE CHR$(0) + "H": scr = scr + 1: GOTO kiesscrn CASE CHR$(0) + "K": scr = scr - 1: GOTO kiesscrn CASE CHR$(0) + "M": scr = scr + 1: GOTO kiesscrn CASE ELSE: GOTO Verderscrn END SELECT bewerkscrn: COLOR 7 LOCATE 5, 48: PRINT scr$(scr) END SUB SUB tekencoord max = 0 FOR m = 0 TO mmax FOR n = 0 TO nmax u(m, n) = x1(m, n) * u1 + x2(m, n) * u2 + y1(m, n) * u3 + y2(m, n) * u4 v(m, n) = x1(m, n) * v1 + x2(m, n) * v2 + y1(m, n) * v3 + y2(m, n) * v4 IF max < ABS(u(m, n)) THEN max = ABS(u(m, n)) IF max < ABS(v(m, n)) THEN max = ABS(v(m, n)) NEXT n NEXT m max = max * fac * 1.02 '''reserve''' END SUB SUB tekencurv SELECT CASE fig CASE 1 LOCATE 2, 27: COLOR colcrv2: PRINT "cirkel "; COLOR colcrv1: PRINT "hyperbool": COLOR 7 nn = INT(nmax / 2): mm = INT(mmax / 2) FOR m = 0 TO mmax - 1 LINE (u(m, nn), v(m, nn))-(u(m + 1, nn), v(m + 1, nn)), colcrv2 NEXT m FOR n = 0 TO nmax - 1 LINE (u(0, n), v(0, n))-(u(0, n + 1), v(0, n + 1)), colcrv1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv1 NEXT n CASE 2 LOCATE 2, 27: COLOR colcrv2: PRINT "kernlus "; COLOR colcrv1: PRINT "'hyperbool'": COLOR 7 nn = INT(nmax / 2): mm = INT(mmax / 2) FOR m = 0 TO mmax - 1 LINE (u(m, nn), v(m, nn))-(u(m + 1, nn), v(m + 1, nn)), colcrv2 NEXT m FOR n = 0 TO nmax - 1 LINE (u(0, n), v(0, n))-(u(0, n + 1), v(0, n + 1)), colcrv1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv1 NEXT n CASE 3 LOCATE 2, 27: COLOR colcrv2: PRINT "sech "; COLOR colcrv3: PRINT "cosecans "; COLOR colcrv1: PRINT "ñ cosech": COLOR 7 mm = INT(mmax / 2) FOR m = 0 TO mmax - 1 LINE (u(m, nmax), v(m, nmax))-(u(m + 1, nmax), v(m + 1, nmax)), colcrv2 LINE (u(m, 0), v(m, 0))-(u(m + 1, 0), v(m + 1, 0)), colcrv1 NEXT m FOR n = 0 TO nmax - 1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv3 NEXT n CASE 4 LOCATE 2, 27: COLOR colcrv1: PRINT "exponentieel" mm = INT(mmax / 2) FOR n = 0 TO nmax - 1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv1 NEXT n CASE 5 LOCATE 2, 27: COLOR colcrv1: PRINT "parabool" mm = INT(mmax / 2) FOR n = 0 TO nmax - 1 LINE (u(0, n), v(0, n))-(u(0, n + 1), v(0, n + 1)), colcrv1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv1 NEXT n CASE 6 LOCATE 2, 27: COLOR colcrv3: PRINT "cosinus "; COLOR colcrv1: PRINT "cosh "; COLOR colcrv2: PRINT "sinh": COLOR 7 mm = INT(mmax / 2) nn2 = INT(nmax / 2): nn3 = INT(nmax * .75): nn1 = INT(nmax / 4) FOR n = 0 TO nmax - 1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv3 NEXT n FOR m = 0 TO mmax - 1 LINE (u(m, nmax), v(m, nmax))-(u(m + 1, nmax), v(m + 1, nmax)), colcrv1 LINE (u(m, 0), v(m, 0))-(u(m + 1, 0), v(m + 1, 0)), colcrv1 LINE (u(m, nn2), v(m, nn2))-(u(m + 1, nn2), v(m + 1, nn2)), colcrv1 LINE (u(m, nn1), v(m, nn1))-(u(m + 1, nn1), v(m + 1, nn1)), colcrv2 LINE (u(m, nn3), v(m, nn3))-(u(m + 1, nn3), v(m + 1, nn3)), colcrv2 NEXT m CASE 7 LOCATE 2, 27: COLOR colcrv1: PRINT "tanh "; COLOR colcrv3: PRINT "tangens "; COLOR colcrv2: PRINT "ñ cotanh": COLOR 7 mm = INT(mmax / 2) FOR m = 0 TO mmax - 1 LINE (u(m, nmax), v(m, nmax))-(u(m + 1, nmax), v(m + 1, nmax)), colcrv2 LINE (u(m, 0), v(m, 0))-(u(m + 1, 0), v(m + 1, 0)), colcrv1 NEXT m FOR n = 0 TO nmax - 1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv3 NEXT n CASE 10 LOCATE 2, 27: COLOR colcrv1: PRINT "cubische parabool" mm = INT(mmax / 2) FOR n = 0 TO nmax - 1 LINE (u(0, n), v(0, n))-(u(0, n + 1), v(0, n + 1)), colcrv1 LINE (u(mm, n), v(mm, n))-(u(mm, n + 1), v(mm, n + 1)), colcrv1 NEXT n END SELECT END SUB SUB tekenen tel = tel + 1: vlag = 0: a$ = "" IF tel = 1 THEN CALL scherm CLS IF scr > 1 THEN PAINT (0, 0), scrcol(scr) LOCATE 1, 1 PRINT " " PRINT " " LOCATE 1, 1: COLOR 7 PRINT USING "###/### :####ø rot. ##"; tel - 1; nrot; xi; nr% LOCATE 1, 27: COLOR 7: PRINT tit$; rij = CSRLIN: kol = POS(0) '''figuur opbouwen''' '''***************''' IF col(1) = 7 THEN CALL tekenfig ''' assenvlakken''' '''*************''' IF col(4) = 11 THEN vlagxy = 1: CALL tekenxyvlak '''assen''' '''*****''' IF col(5) = 11 THEN CALL tekenxyas '''wachtlus''' '''********''' FOR dum = 1 TO 2000: NEXT dum vlagxy = 0 '''ESCAPE=STOP''' '''***********''' IF vlag = 1 THEN vlag = 0: xi = 360: EXIT SUB '''parameterfamilies tonen''' '''***********************''' IF col(2) = 11 THEN CALL tekenparm '''ESCAPE=STOP''' '''***********''' IF vlag = 1 THEN vlag = 0: xi = 360: EXIT SUB '''Curven tekenen''' '''**************''' IF col(3) = 11 THEN CALL tekencurv '''wachtlus''' '''********''' FOR dum = 1 TO 2000: NEXT dum '''Stoppen na elk beeld''' '''********************''' IF col(6) = 11 THEN LOCATE 1, 60: COLOR 3: PRINT "-> Druk een toets..." IF mel = 1 THEN PLAY "l21o3c" SLEEP: a$ = INKEY$: PLAY "o4l12d" IF a$ = CHR$(27) THEN col(6) = 7 LOCATE 1, 60: COLOR 3: PRINT ">>> Even geduld... " END IF END SUB SUB tekenfig FOR m = 0 TO mmax - 1 FOR n = 0 TO nmax - 1 LINE (u(m, n), v(m, n))-(u(m, n + 1), v(m, n + 1)), colm LINE (u(m, n), v(m, n))-(u(m + 1, n), v(m + 1, n)), coln NEXT n IF vlag = 0 THEN a$ = INKEY$ IF a$ = CHR$(27) THEN a$ = "" vlag = 1 LOCATE 1, 60: COLOR 3: PRINT ">>> Even geduld... " LOCATE rij, kol PLAY "o4l12d" END IF LINE (u(m, nmax), v(m, nmax))-(u(m + 1, nmax), v(m + 1, nmax)), coln NEXT m '''voor goniom. functies''' '''*********************''' IF fig > 2 AND fig <> 5 THEN FOR n = 0 TO nmax - 1 LINE (u(mmax, n), v(mmax, n))-(u(mmax, n + 1), v(mmax, n + 1)), colm NEXT n END IF END SUB SUB tekenparm LOCATE 2, 27: COLOR colmm: PRINT "Parameterkrommen M"; LOCATE 1, 60: COLOR 3: PRINT "-> Druk een toets..." vlag = 0: a$ = "": telscan = 1 fam1: IF scol(telscan) = 7 THEN scolm = colm ELSE scolm = scrcol(scr) FOR n = 0 TO nmax - 1 LINE (u(0, n), v(0, n))-(u(0, n + 1), v(0, n + 1)), colmm NEXT n FOR dum = 1 TO 200: NEXT dum FOR m = 0 TO mmax - 1 FOR n = 0 TO nmax - 1 LINE (u(m, n), v(m, n))-(u(m, n + 1), v(m, n + 1)), scolm '''colm LINE (u(m + 1, n), v(m + 1, n))-(u(m + 1, n + 1), v(m + 1, n + 1)), colmm NEXT n FOR dum = 1 TO 200: NEXT dum IF vlag = 0 THEN a$ = INKEY$ IF a$ = CHR$(27) THEN vlag = 1: EXIT SUB IF a$ <> "" THEN a$ = "" vlag = 1 LOCATE 1, 60: COLOR 3: PRINT ">>> Even geduld... " PLAY "o4l12d" END IF NEXT m FOR n = 0 TO nmax - 1 LINE (u(mmax, n), v(mmax, n))-(u(mmax, n + 1), v(mmax, n + 1)), scolm '''colm NEXT n telscan = telscan + 1 IF vlag = 0 AND telscan <= scan GOTO fam1 ' IF a$ = CHR$(27) THEN EXIT SUB vlag = 0: telscan = 1 LOCATE 2, 27: COLOR colnn: PRINT "Parameterkrommen N"; LOCATE 1, 60: COLOR 3: PRINT "-> Druk een toets..." fam2: IF scol(telscan) = 7 THEN scoln = coln ELSE scoln = scrcol(scr) FOR m = 0 TO mmax - 1 LINE (u(m, 0), v(m, 0))-(u(m + 1, 0), v(m + 1, 0)), colnn NEXT m FOR dum = 1 TO 200: NEXT dum FOR n = 0 TO nmax - 1 FOR m = 0 TO mmax - 1 LINE (u(m, n), v(m, n))-(u(m + 1, n), v(m + 1, n)), scoln '''coln LINE (u(m, n + 1), v(m, n + 1))-(u(m + 1, n + 1), v(m + 1, n + 1)), colnn NEXT m FOR dum = 1 TO 200: NEXT dum IF vlag = 0 THEN a$ = INKEY$ IF a$ = CHR$(27) THEN vlag = 1: EXIT SUB IF a$ <> "" THEN a$ = "" vlag = 1 LOCATE 1, 60: COLOR 3: PRINT ">>> Even geduld... " PLAY "o4l12d" END IF NEXT n FOR m = 0 TO mmax - 1 LINE (u(m, nmax), v(m, nmax))-(u(m + 1, nmax), v(m + 1, nmax)), scoln '''coln NEXT m FOR dum = 1 TO 200: NEXT dum telscan = telscan + 1 IF vlag = 0 AND telscan <= scan GOTO fam2 ' IF a$ = CHR$(27) THEN EXIT SUB vlag = 0: telscan = 0 COLOR 0 LOCATE 2, 27: PRINT "Parameterkrommen n"; LOCATE 1, 60: PRINT "-> Druk een toets..." END SUB SUB tekenxy tel = tel + 1 IF tel = 1 THEN CALL scherm: CLS COLOR 7 LOCATE 1, 1 PRINT USING "###/### :####ø rot. ##"; tel - 1; nrot; xi; nr% LOCATE 1, 27: COLOR 7: PRINT tit$; COLOR 11: PRINT " X "; COLOR 13: PRINT "Y" ''' X en Y vlak niet tonen ''' '''************************''' IF col(4) = 7 THEN LINE (0, 0)-(u11, v11), 0 LINE (0, 0)-(u22, v22), 0 LINE (0, 0)-(u33, v33), 0 LINE (0, 0)-(u44, v44), 0 PSET (u22, v22), 7: PSET (u44, v44), 7 ''' Toon rotatiebaan PSET (u11, v11), 7: PSET (u33, v33), 7 LINE (0, 0)-(u1, v1), 11 LINE (0, 0)-(u2, v2), 11 LINE (0, 0)-(u3, v3), 13 LINE (0, 0)-(u4, v4), 13 u11 = u1: v11 = v1: u22 = u2: v22 = v2 u33 = u3: v33 = v3: u44 = u4: v44 = v4 ELSE ''' X en Y vlak tonen ''' '''*******************'' LINE (0, 0)-(u11, v11), 0: LINE -(u11 + u22, v11 + v22), 0 LINE -(u22, v22), 0: LINE -(0, 0), 0 LINE (0, 0)-(u33, v33), 0: LINE -(u33 + u44, v33 + v44), 0 LINE -(u44, v44), 0: LINE -(0, 0), 0 PSET (u22, v22), 7: PSET (u44, v44), 7 ''' Toon rotatiebaan LINE (0, 0)-(u1, v1), 11: LINE -(u1 + u2, v1 + v2), 11 LINE -(u2, v2), 11: LINE -(0, 0), 11 LINE (0, 0)-(u3, v3), 13: LINE -(u3 + u4, v3 + v4), 13 LINE -(u4, v4), 13: LINE -(0, 0), 13 u11 = u1: v11 = v1: u22 = u2: v22 = v2 u33 = u3: v33 = v3: u44 = u4: v44 = v4 END IF '''ESCAPE=STOP''' '''***********''' IF INKEY$ = CHR$(27) THEN xi = 360 '''Stoppen na elk beeld''' '''********************''' IF ja$ = "y" THEN LOCATE 1, 60: COLOR 3: PRINT "-> Druk een toets..." IF mel = 1 THEN PLAY "l21o3c" SLEEP: a$ = INKEY$: IF a$ = " " THEN ja$ = "" END IF END SUB SUB tekenxyas IF vlagxy = 0 THEN COLOR 11: PRINT " X "; COLOR 13: PRINT "Y" END IF mm = max / (1.1 * fac) LINE (0, 0)-(u1 * mm, v1 * mm), 11 LINE (0, 0)-(u2 * mm, v2 * mm), 3 LINE (0, 0)-(u3 * mm, v3 * mm), 13 LINE (0, 0)-(u4 * mm, v4 * mm), 5 END SUB SUB tekenxyvlak COLOR 11: PRINT " X "; COLOR 13: PRINT "Y" LINE (0, 0)-(u1, v1), 11 LINE -(u1 + u2, v1 + v2), 11 LINE -(u2, v2), 11 LINE -(0, 0), 11 LINE (0, 0)-(u3, v3), 13 LINE -(u3 + u4, v3 + v4), 13 LINE -(u4, v4), 13 LINE -(0, 0), 13 END SUB