PROGRAMM DIENT ZUM 3-DIMENSIONALEN DARSTELLEN
VON FUNKTIONEN DER ART Z = F(X, Y)
DIE FUNKTION IST DEN ZEILEN 1020 BIS 1090
ABZULEGEN UND MIT RETURN ABZUSCHLIESSEN.
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
1000 A=100:GOTO 20:REM ## FKT3D ##
1010 GOTO 1100:REM --- HIER IST Z = F(X,Y) ABZULEGEN ---
1020 Z=ABS(X)+ABS(Y):IF Z<.01 THEN Z=1:RETURN
1030 Z=SIN(Z)/Z
1040 RETURN
1100 SR$="3D-Funktion"
1110 HO=INT((HO-LEN(SR$)-6)/2):VE=0:GOSUB 110:GOSUB 150:PRINT
1120 REM --- STARTWERTE ---
1130 XS=-20:XE=20:YS=-20:YE=20
1140 ZS=-.5:ZE=1:F1=3:F2=20:T$="N"
1150 REM --- HAUPTROUTINE ---
1160 REM --- ERZEUGT DAS BILD ---
1170 Y2=INT(VG/2):XX=HG-Y2:DIM HI(HG,1),FU(XX,1)
1180 REM --- FELD BELEGEN ---
1190 PRINT "bitte etwas warten"
1200 FOR J=0 TO HG:HI(J,0)=0:HI(J,1)=1:NEXT J
1210 REM --- EINGABEN ---
1220 PRINT "Startwert von x =";XS;:A$="":INPUT A$
1230 IF A$="" THEN 1250
1240 XS=VAL(A$)
1250 PRINT "Endwert von x =";XE;:A$="":INPUT A$
1260 IF A$="" THEN 1280
1270 XE=VAL(A$)
1280 IF XE<=XS THEN PRINT "Fehler":GOTO 1220
1290 PRINT "Startwert von y =";YS;:A$="":INPUT A$
1300 IF A$="" THEN 1320
1310 YS=VAL(A$)
1320 PRINT "Endwert von y =";YE;:A$="":INPUT A$
1330 IF A$="" THEN 1350
1340 YE=VAL(A$)
1350 IF YE<=YS THEN PRINT "Fehler":GOTO 1290
1360 PRINT "Startwert von z =";ZS;:A$="":INPUT A$
1370 IF A$="" THEN 1390
1380 ZS=VAL(A$)
1390 PRINT "Endwert von z =";ZE;:A$="":INPUT A$
1400 IF A$="" THEN 1420
1410 IF ZE<=ZS THEN PRINT "Fehler":GOTO 1360
1420 PRINT "x-Schritt =";F2;:A$="":INPUT A$
1430 IF A$="" THEN 1450
1440 F2=VAL(A$)
1450 PRINT "y-Schritt =";F1;:A$="":INPUT A$
1460 IF A$="" THEN 1490
1470 F1=VAL(A$)
1480 REM --- HILFSWERTE ---
1490 VZ=Y2/(ZE-ZS):V2=VZ/VG:MO=2:MI=-1:MA=100:GV=1/VG
1500 REM --- SCHRITTWEITEN ---
1510 SX=(XE-XS)/XX:SY=(YE-YS)/Y2:SS=SX*F2
1520 REM --- BILD DARSTELLEN ---
1530 GOSUB 600:CN=0
1540 S2=SY*F1:YW=YS-S2
1550 FOR J=0 TO Y2+.8*F1 STEP F1:J1=1-J*GV
1560 YW=YW+S2:XW=XS-SX:VA=MA
1570 IF J>Y2 THEN J=Y2:YW=YE
1580 FOR I=0 TO XX
1590 XW=XW+SX:K=I+J:X=XW:Y=YW:HO=K/HG
1600 GOSUB 1020
1610 VE=J1+(ZS-Z)*V2
1620 IF VE>MO THEN VE=MO
1630 IF VE<MI THEN VE=MI
1640 IF(VA=MA)OR(ABS(VA-VE)<=GV) THEN 1700
1650 S=SGN(VE-VA)/VG:VV=VE
1660 FOR VE=VA+S TO VV STEP S
1670 IF VE>HI(K,0) THEN GOSUB 620
1680 IF VE<HI(K,1) THEN GOSUB 620
1690 NEXT VE:VE=VV
1700 VA=VE:FU(I,1)=VE
1710 IF VE>HI(K,1) THEN FU(I,0)=HI(K,1):FU(I,1)=HI(K,1)
1720 IF VE>HI(K,0) THEN HI(K,0)=VE:GOSUB 620
1730 IF VE<HI(K,1) THEN HI(K,1)=VE:GOSUB 620
1740 IF J=0 THEN FU(I,0)=VE
1750 GOSUB 200:IF IN<>0 THEN 2030
1760 NEXT I
1770 REM --- QUERLINIEN ---
1780 FOR I=0 TO XX+.9*F2 STEP F2
1790 IF I>XX THEN I=XX
1800 F=FU(I,0)>FU(I,1)
1810 IF F THEN HO=(J+I-F1)/HG:VE=FU(I,0):GOSUB 620
1820 IF F THEN HO=(J+I)/HG:VE=FU(I,1):GOSUB 630
1830 NEXT I
1840 REM --- UMSCHREIBEN DER QUERLINIENWERTE ---
1850 FOR I=0 TO XX:FU(I,0)=FU(I,1):NEXT I
1860 REM ---- UNTERER KASTEN ----
1870 IF J=0 THEN HO=0:VE=FU(0,0):GOSUB 620:VE=1-GV:GOSUB 630
1880 IF J=0 THEN HO=XX/HG:GOSUB 630:VE=FU(XX,0):GOSUB 630
1890 NEXT J
1900 REM ----- RECHTS UNTERER KASTEN ---
1910 HO=XX/HG:VE=1-GV:GOSUB 620:HO=1-1/HG:VE=Y2*GV
1920 GOSUB 630:VE=FU(XX,1):GOSUB 630
1930 REM --- BILD FERTIG ---
1940 GOSUB 210:REM KENNWERTE SCHREIBEN
1950 SR=F1:GOSUB 300:A$="Schritte "+SR$+":"
1960 SR=F2:GOSUB 300:SR$=A$+SR$:HO=0:VE=0:GOSUB 650
1970 SR=XS:GOSUB 300:A$=SR$+"<x<":SR=XE:GOSUB 300
1980 SR$=A$+SR$:VE=8*GV:GOSUB 650
1990 SR=YS:GOSUB 300:A$=SR$+"<y<":SR=YE:GOSUB 300
2000 SR$=A$+SR$:VE=16*GV:GOSUB 650
2010 SR=ZS:GOSUB 300:A$=SR$+"<z<":SR=ZE:GOSUB 300
2020 SR$=A$+SR$:VE=24*GV:GOSUB 650
2030 GOSUB 210:GOSUB 100
2040 PRINT "Wie fortsetzen ?"
2050 INPUT "E = Ende N = Neues Bild";T$:
2060 IF(T$<>"E")AND(T$<>"e") THEN T$="N":GOTO 1190
2070 GOTO 950
30000 REM --------- HINWEISE ----------------
30010 REM PROGRAMM DIENT ZUM 3-DIMENSIONALEN DARSTELLEN
30020 REM VON FUNKTIONEN DER ART Z = F(X, Y)
30030 REM DIE FUNKTION IST DEN ZEILEN 1020 BIS 1090
30040 REM ABZULEGEN UND MIT RETURN ABZUSCHLIESSEN.
32000 REM ----------- AUTOR ------------------
32010 REM H. VOELZ; 22.8.89; FUER BASICODE-BUCH
32020 REM ------------------------------------
32030 REM
32040 REM ERSTAUSSTRAHLUNG: RADIO DDR
32050 REM 900124