1 REM ************************ 2 REM * NORMALE AXONOMETRIE * 3 REM * * 4 REM * (C) APRIL 1984 * 5 REM * STEGER PETER * 6 REM * BAHNHOFSTRASSE 20B * 7 REM * 6632 EHRWALD/TRIOL * 8 REM * TEL : A-05673/2656 * 9 REM ************************ 10 : PRINT"[147]" : POKE 53280,0 : POKE 53281,0 20 PRINTTAB(10)"[150]NORMALE AXONOMETRIE :" : PRINT TAB(10)"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]" 25 PRINT"DIESES PROGRAMM STELLT EBENFLAECHIG" 30 PRINT"[145]BEGRENZTE KOERPER,NACH EINGABE BZW EINLE" 35 PRINT"[145]SEN DER ECKPUNKTE UND DER VERBINDUNGSVOR" 40 PRINT"[145]SCHRIFT IN NORMALER AXONOMETRIE DAR." 45 PRINT"HIERBEI KANN DAS ACHSENKREUZ BELIEBIG" 50 PRINT"[145]GEWAEHLT WERDEN." 55 PRINT"ALLERDINGS BLEIBT DER URSPRUNG IN DER" 60 PRINT"BILDSCHIRMMITTE." 65 PRINT"NACH DEM ZEICHNEN DER FIGUR ERSCHEINT" 70 PRINT"[145]IN DER LINKEN OBEREN ECKE UND" 75 PRINT"MAN KOMMT DANN MIT [150] ODER IN" 76 PRINT"[145]DAS HAUPTMENUE." 80 PRINT"DIE ERSTELLTEN KOERPER KOENNEN DANN" 85 PRINT"AUCH AUF DISK ABGESPEICHERT WERDEN." 90 PRINT""TAB(11)"< TASTE DRUECKEN >"; 95 POKE 198,0 : WAIT 198,1 100 CLR:DIM PT(100,3),ZP(100),PA(100,3) 105 PRINT"[147]SOLL DER KOERPER VON DISK EINGELESEN" 110 PRINT"WERDEN ?" 115 GET A$ : IF A$ = "J" THEN 1000 120 IF A$ <>"N" THEN 115 125 PRINT"[147]BITTE UM DIE EINGABE DER EINZELNEN" 126 PRINT"ECKPUNKTE MIT DREI KOORDINATEN (X,Y,Z)" 127 PRINT"BEI X='ENDE' WIRD DIE EINGABE BEENDET." 128 PRINT"BEI X='\' KANN DER VORIGE PUNKT NOCHEIN" 129 PRINT"MAL EINGEGEBEN WERDEN." 130 PRINT"("A")"; : INPUT PX$,PY,PZ : PX=VAL(PX$) : IF PX$="ENDE" THEN 200 135 IF PX$="\" THEN A=A-1 : GOTO 130 140 PT(A,1) = PX 145 PT(A,2) = PY 150 PT(A,3) = PZ 155 PA(A,1) = PT(A,1) 160 PA(A,2) = PT(A,2) 165 PA(A,3) = PT(A,3) 170 A=A+1 : GOTO 130 200 REM 201 REM VERBINDUNGSORDNUNG 202 REM 205 EP = A-1 : PRINT"[147]IN WELCHER REIHENFOLGE SOLLEN WELCHE" 210 PRINT"PUNKTE VERBUNDEN WERDEN ? 215 [153]"'ENDE' BEENDET DIE EINGABE WIEDER." 220 [153]"'\' LAESST DIE KORREKTUR DER VORIGEN " 225 [153]"EINGABE ZU." 230 [133] "AUSGANGSPUNKT";A 235 ZP(0)[178]A 240 B[178]1 : [153]"" : [143] EINGABESCHLEIFE 245 [153]"VON ("A") NACH : "; : [133] A$ : [139] A$[178] "ENDE" [167] 270 250 [139] A$ [178] "\" [167] B[178]B[171]1 : A[178]A1 : [137] 245 255 A1[178]A : A [178] [197](A$) : 260 ZP(B) [178] A 265 B[178]B[170]1 : [137] 245 270 SP[178]B[171]1 300 [143] 301 [143] KOORDINATENSYSTEM FESTLEGEN 302 [143] 305 [153]"LOADBESTIMMEN SIE NUN DAS ACHSENKREUZ." 310 [153]"GEBEN SIE DIE WINKEL ZWISCHEN :" 315 [153]"" 320 [153] [163]19)"THEN" 325 [153] [163]19)"THEN" 330 [153] " Z- UND Y-ACHSE ";[163]19)"(null)(null)";[163]24)"Z- UND X-ACHSE " 335 [153] [163]18)"(null) (null)"[163]24)"EIN." 345 [153] [163]17)"(null) (null)" 350 [143] 355 [133] " ALPHA = 120CMDCMDCMDCMDCMD";AL:[153][163]25);:[133]"ON BETA = 120CMDCMDCMDCMDCMD";BT 360 AL[178]AL[172][255][173]180 : BT[178]BT[172][255][173]180 400 [143] 401 [143] ZEICHENRdINE 402 [143] 405 d 5,0 410 A[178]ZP(0) 415 XA [178] 160 [171] [191](AL)[172]PT(A,2) [170] [191](BT)[172]PT(A,1) 420 YA [178] 100 [171] PT(A,3) [171] [190](AL)[172]PT(A,2) [171] [190](BT)[172]PT(A,1) 425 [129] B [178] 1 [164] SP 430 A[178]ZP(B) 435 XS[178]160[171][191](AL)[172]PT(A,2)[170][191](BT)[172]PT(A,1):[139] XS[177]319 [167] XS[178]319:[139]XS[179]0[167]XS[178]0 440 YS[178]100[171]PT(A,3)[171][190](AL)[172]PT(A,2)[171][190](BT)[172]PT(A,1):[139]YS[177]199 [167] YS[178]199 441 [139] YS[179]0 [167]YS[178]0 445 d XA,YA,XS,YS,1 450 XA[178]XS : YA[178]YS 455 [130] 460 [139] KO [178] 1 [167] 1410 480 D$[178]"" 485 do 5,5,D$,1,0,7 490 [161] A$ : [139] A$ [179][177] [199](133) [175] A$ [179][177] [199](13) [167] 490 500 [143] 501 [143] HAUPTMENUE 502 [143] 505 dg : [153]"LOAD"[163]10) "HAUPTMENUE :" 510 [153] [163]10)"VALVALVALVALVALVALVALVALVALVALVALVAL" 515 [153]"(1) = NEUES ACHSENKREUZ 520 PRINT"(2) = DREHUNG DER FIGUR UM OO 525 [153]"(3) = AUSGANGSZUSTAND HERSTELLEN" 530 [153]"(4) = VERSCHIEBEN DER FIGUR" 535 [153]"(5) = KOORDINATENACHSEN EINZEICHNEN" 545 [153]"(6) = ABSPEICHERN DER KOERPERDATEN" 550 [153]"(7) = HARDCOPY AUF DRUCKER 555 PRINT"(8) = NEUER START" 560 PRINT"(9) = ZUR GRAFIK ZURUECK" 580 PRINT TAB(10) "(0) = ENDE" 585 GET A$ : IF A$ <"0" OR A$ >"9" OR A$="" THEN 585 590 ON VAL(A$) GOTO 300,600,800,1300,1400,1100,1500,100,1220 595 STOP 600 REM 601 REM DREHUNG DER FIGUR UM OO 610 PRINT"[147]DREHUNG DER FIGUR UM OO :":PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]" 615 PRINT"BITTE WAEHLEN SIE AUS :" 620 PRINT"(1) = DREHUNG UM DIE Z-ACHSE. 625 [153]"(2) = DREHUNG UM DIE Y-ACHSE. 630 PRINT"(3) = DREHUNG UM DIE X-ACHSE." 635 GET A :IF A < 1 OR A >3 THEN 635 636 Z=5+2*A : d Z,3,29,1 640 PRINT TAB(7)"BITTE DEN DREHWINKEL :";:INPUT DE : DE=DE*(null)/180 645 ON A GOTO 650,700,750 650 REM 651 REM UM DIE Z-ACHSE 655 FOR X=0 TO EP 660 EO=ATN(PT(X,1)/(PT(X,2)-1E-32))-(null)*(PT(X,2)<=0)-2*(null)*(PT(X,1)<0 ANDPT(X,2)>0) 665 EO = EO+DE : IF EO >= 2*(null) THEN EO = EO-2*(null) 670 R=SQR(PT(X,1)^2+PT(X,2)^2) 675 PT(X,1)=SIN(EO)*R 680 PT(X,2)=COS(EO)*R 685 NEXT 690 GOTO 790 : REM RETURN 700 REM 701 REM UM DIE Y-ACHSE 705 FOR X=0 TO EP 710 EO=ATN(PT(X,3)/(PT(X,1)-1E-32))-(null)*(PT(X,1)<=0)-2*(null)*(PT(X,3)<0ANDPT(X,1)>0) 715 EO=EO+DE : IF EO >= 2*(null) THEN EO=EO-2*(null) 720 R = SQR(PT(X,1)^2+PT(X,3)^2) 725 PT(X,1)=COS(EO)*R 730 PT(X,3)=SIN(EO)*R 735 NEXT 740 GOTO 790 : REM RETURN 750 REM 751 REM UM DIE X-ACHSE 755 FOR X=0 TO EP 760 EO=ATN(PT(X,2)/(PT(X,3)-1E-32))-(null)*(PT(X,3)<=0)-2*(null)*(PT(X,2)<0ANDPT(X,3)>0) 765 EO=EO+DE : IF EO>= 2*(null) THEN EO = EO-2*(null) 766 R = SQR (PT(X,2)^2+PT(X,3)^2) 770 PT(X,3)=COS(EO)*R 775 PT(X,2)=SIN(EO)*R 780 NEXT 790 dp 2 : GOTO 400 : REM RETURN 800 REM AUSGANAGSZUSTAND 801 REM 810 FOR X = 0 TO EP 820 FOR Y = 1 TO 3 830 PT(X,Y)=PA(X,Y) 840 NEXTY,X 850 GOTO 400 999 REM 1000 REM DATEN VOM DER dr HOLEN 1001 REM 1010 OPEN 1,8,15 : REM FEHLERKANAL 1015 PRINT"BITTE DATEINAMEN :"; : INPUT NS$ : N$=NS$ 1020 NS$=NS$+",S,R" 1025 OPEN 2,8,2,NS$ 1030 GOSUB 1250 1032 IF F1 = 62 THEN CLOSE 2 : GOTO 1015 1035 PRINT"EINLESEN DER DATEN VON :";N$ 1040 INPUT#2,EP 1045 INPUT#2,SP 1050 FOR X = 0 TO EP 1055 FOR Y = 1 TO 3 1060 INPUT#2,PT(X,Y) : PA(X,Y)=PT(X,Y) 1065 NEXT Y 1070 GOSUB 1250 1075 NEXT X 1080 FOR X = 0 TO SP 1085 INPUT#2,ZP(X) 1090 NEXT X 1095 GOSUB 1250 1097 CLOSE 2 : CLOSE 1 : GOTO 300 1100 dg : REM KOERPERDATEN AUF dr 1101 REM 1110 PRINT "[147]KOERPERDATEN AUF DISK:" 1120 PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]" 1130 PRINT"BITTE DATEINAMEN :"; : INPUT NS$ 1140 OPEN 1,8,15 : REM FEHLERKANAL 1150 NS$=NS$+",S,W" 1160 OPEN 2,8,2,NS$ 1162 PRINT#2,EP : PRINT#2,SP 1165 FOR X = 0 TO EP : REM PUNKTE 1170 FOR Y = 1 TO 3 1180 PRINT#2,PT(X,Y) 1185 NEXT Y 1190 GOSUB 1250 1195 NEXT X 1200 FOR X = 0 TO SP : REM VERBINDUNGSVORSCHRIFT 1205 PRINT#2,ZP(X) 1210 NEXT 1215 GOSUB 1250 1220 CLOSE 2 : CLOSE 1 : dp 2 : GOTO 490 1250 REM 1251 REM FEHLERKANAL 1252 REM 1255 INPUT#1,F1,F1$,F2,F3 : IF F1 = 0 THEN RETURN : REM KEIN FEHLER 1260 PRINT "[150]FEHLER AUF DER DISK !" 1265 PRINT""F1,F1$" "F3" "F4 1270 PRINT"BITTE MIT BESTAETIGEN,ODER MIT" 1275 PRINT" DAS PROGRAMM ABBRECHEN !" 1280 GETAN$ : IF AN$ = CHR$(13) THEN RETURN 1285 IF AN$ <> CHR$(32) THEN 1280 1290 CLOSE 1 : STOP 1300 REM 1301 REM VERSCHIEBEN DER FIGUR 1302 REM 1305 PRINT"[147]VERSCHIEBEN DER FIGUR :":PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]" 1310 PRINT"BITTE UM DEN VERSCHIEBEVEKTOR IN DER" 1315 PRINT"FORM 'X,Y,Z' !" 1320 INPUT"VEKTOR :";PX,PY,PZ 1322 PRINT"BITTE ETWAS GEDULD ." 1325 FOR A=0 TO EP 1335 PT(A,1) = PT(A,1) + PX 1340 PT(A,2) = PT(A,2) + PY 1345 PT(A,3) = PT(A,3) + PZ 1350 NEXT A 1360 GOTO400 1400 REM 1401 REM KOORDINATENACHSEN 1402 REM 1405 IF KO=1 THEN TY=0 : KO=0 : GOTO 1415 1410 KO=1 : TY = 1 1415 XS=160-SIN(AL)*95 : X1=160-SIN(AL)*105 1420 YS=100-COS(AL)*95 : Y1=100-COS(AL)*105 1425 d X1,Y1,25,TY,1 1430 d 160,100,XS,YS,TY : REM Y-ACHSE 1435 XS=160+SIN(BT)*95 : X1=160+SIN(BT)*102 1440 YS=100-COS(BT)*95 : Y1=100-COS(BT)*105 1445 d 160,100,XS,YS,TY : REM X-ACHSE 1450 d X1,Y1,24,TY,1 1455 d 160,100,160,10,TY : REM Z=ACHSE 1460 d 155,0,26,TY,1 1470 dp 2 : GOTO 480 1500 REM 1501 REM HARDdw 1502 REM 1505 do 5,5,D$,0,0,7 1510 D$="" 1515 do 5,5,D$,1,0,8 1520 dp 2 1525 dw 1530 do 5,5,D$,0,0,8 1535 GOTO 480