100 REM ----------------------------- 105 REM -- 3D-MOVIE-MAKER -- 110 REM -- EIN PROGRAMM VON: -- 115 REM -- DIRK & ARMIN BIERNACZYK -- 120 REM -- AN DER PAPENBURG 41 -- 125 REM -- 4630 BOCHUM 6 -- 130 REM -- TEL.: ////// -- 135 REM ----------------------------- 140 REM (C) 1985 BY ARMIN & DIRK 145 REM BIERNACZYK 150 : 160 REM ------------------ 170 REM --- HAUPTMENUE --- 180 REM ------------------ 190 : 191 IFA=0THENA=1:LOAD"TRICK.OBJ",8,1 192 : 195 POKE56,50:CLR:REM SPEICHER HERAB. 200 PRINTCHR$(147) 210 PRINTSPC(10)"** 3D-MOVIE-MAKER **" 220 PRINT:PRINT:PRINT:PRINT 230 PRINTSPC(9)"1 - GRAFIK ERSTELLEN" 235 PRINT 240 PRINTSPC(9)"2 - GRAFIK ABSPIELEN" 245 PRINT 250 PRINTSPC(9)"3 - GRAFIK LADEN" 255 PRINT 260 PRINTSPC(9)"4 - GRAFIK ABSPEICHERN" 262 PRINT 264 PRINTSPC(9)"5 - ENDE" 265 : 270 GETW$:IFW$<"1"ORW$>"5"THEN270 280 W=VAL(W$) 285 IFW=5THENEND 290 ONWGOSUB1040,5040,6040,7040 300 GOTO200 310 : 315 : 320 : 1000 REM ----------------- 1010 REM --- ERSTELLEN --- 1020 REM ----------------- 1030 : 1040 GOSUB4540 :REM VARIABLEN 1050 GOSUB4040 :REM EINLESEN 1060 PRINTCHR$(147)"FERTIGE BILDER: " 1061 IFAN*(A2*6+2)<23000THEN1080 1062 PRINT"ZU WENIG SPEICHERPLATZ" 1063 POKE198,0:WAIT198,1:RETURN 1070 : 1080 FORQ=1TOAN :REM ANZAHL DER BILDER 1085 GOSUB3040 :REM BEWEGEN 1090 GOSUB2040 :REM BERECHNEN 1095 GETTA$:IFTA$=" "THENIFQ>1THENSYS49152,Q-1,A2,1 1100 NEXT 1110 Q=Q-1 1120 RETURN 1130 : 1135 : 2000 REM ----------------- 2010 REM --- BERECHNEN --- 2020 REM ----------------- 2030 : 2040 REM --- VERSCHIEBEN1 --- 2050 : 2060 FORI=1TOA1 2070 X1(I)=X(I)+X1:Y1(I)=Y(I)+Y1 2080 Z1(I)=Z(I)+Z1 2090 NEXT 2100 : 2110 REM --- DREHEN --- 2120 : 2130 IFW1=0THEN2250 2140 FORI=1TOA1 2150 XD=X1(I):YD=Y1(I) 2160 IFXD=0THENXD=1E-20 2165 IFYD=0THENYD=1E-20 2170 R=SQR(XD*XD+YD*YD) 2180 W=ATN(YD/XD) 2190 IFXD>0ANDYD<0THENW=W+(null)*2:GOTO2210 2200 IFXD<0THENW=W+(null) 2210 W=W+W1 2220 Y1(I)=SIN(W)*R:X1(I)=COS(W)*R 2230 NEXT 2240 : 2250 IFW2=0THEN2370 2260 FORI=1TOA1 2270 ZD=Z1(I):YD=Y1(I) 2280 IFZD=0THENZD=1E-20 2285 IFYD=0THENYD=1E-20 2290 R=SQR(ZD*ZD+YD*YD) 2300 W=ATN(YD/ZD) 2310 IFZD>0ANDYD<0THENW=W+(null)*2:GOTO2330 2320 IFZD<0THENW=W+(null) 2330 W=W+W2 2340 Y1(I)=SIN(W)*R:Z1(I)=COS(W)*R 2350 NEXT 2360 : 2370 IFW3=0THEN2510 2380 FORI=1TOA1 2390 ZD=Z1(I):XD=X1(I) 2400 IFZD=0THENZD=1E-20 2405 IFXD=0THENXD=1E-20 2410 R=SQR(ZD*ZD+XD*XD) 2420 W=ATN(XD/ZD) 2430 IFZD>0ANDXD<0THENW=W+(null)*2:GOTO2450 2440 IFZD<0THENW=W+(null) 2450 W=W+W3 2460 X1(I)=SIN(W)*R:Z1(I)=COS(W)*R 2470 NEXT 2480 : 2490 REM --- UMRECHNEN --- 2500 : 2510 FORI=1TOA1 2530 X1(I)=(X1(I)+X2)*1.01^(Z1(I)+Z2) 2540 Y1(I)=(Y1(I)+Y2)*1.01^(Z1(I)+Z2) 2560 NEXT 2565 REM 1.01 KANN LEICHT GEAENDERT 2567 REM WERDEN 2580 : 2590 PA=0:PB=199 2600 PO=PO-2 2601 REM ----------------------------- 2602 REM --- UBERGETRETENE LINIEN --- 2603 REM --- BERECHNEN UND POKEN --- 2604 REM ----------------------------- 2610 FORI=1TOA2 2620 X0%=X1(P1(I)):Y1%=Y1(P1(I)) 2630 X2%=X1(P2(I)):Y2%=Y1(P2(I)) 2640 X1%=0:X3%=0:ME=0 2641 IFX0%> 159ANDX2%> 159THEN2760 2642 IFX0%<-159ANDX2%<-159THEN2760 2643 IFY1%<- 99ANDY2%<- 99THEN2760 2644 IFY1%> 99ANDY2%> 99THEN2760 2650 IFY1%=Y2%THEN2711 2655 IFX2%=X0%THEN2690 2660 M=(Y2%-Y1%)/(X2%-X0%) 2670 B=-M*X0%+Y1% 2680 GOTO2720 2690 IFY1%>99ORY1%<-99THENY1%=99*SGN(Y1%) 2700 IFY2%>99ORY2%<-99THENY2%=99*SGN(Y2%) 2710 GOTO 2760 2711 IFX0%>159ORX0%<-159THENX0%=159*SGN(X0%) 2712 IFX2%>159ORX2%<-159THENX2%=159*SGN(X2%) 2713 GOTO 2760 2720 IFX0%>159ORX0%<-159THENX0%=159*SGN(X0%):Y1%=M*X0%+B 2730 IFX2%>159ORX2%<-159THENX2%=159*SGN(X2%):Y2%=M*X2%+B 2740 IFY1%>99ORY1%<-99THENY1%=99*SGN(Y1%):X0%=(Y1%-B)/M 2750 IFY2%>99ORY2%<-99THENY2%=99*SGN(Y2%):X2%=(Y2%-B)/M 2760 IFY1%>99ORY1%<-99THENX1%=255:X0%=0:Y1%=0:Y2%=0:X2%=0:GOTO2810 2770 IFX0%>159ORX0%<-159THENX1%=255:X0%=0:Y1%=0:Y2%=0:X2%=0:GOTO2810 2780 : 2790 X0%=X0%+160:X2%=X2%+160 2791 Y1%=Y1%+100:Y2%=Y2%+100 2793 IFY1%>PATHENPA=Y1% 2794 IFY2%>PATHENPA=Y2% 2795 IFY1%255THENX0%=X0%-256:X1%=1 2800 IFX2%>255THENX2%=X2%-256:X3%=1 2805 : 2810 POKEPO,X0%:POKEPO-1,X1% 2820 POKEPO-2,Y1%:POKEPO-3,X2% 2830 POKEPO-4,X3%:POKEPO-5,Y2% 2840 PO=PO-6 2850 NEXT 2860 : 2862 IFPA255ORI>ANTHEN4240 4270 AN=I 4280 RETURN 4290 : 4300 : 4500 REM ----------------- 4510 REM --- VARIABLEN --- 4520 REM ----------------- 4530 : 4533 REM NACH BEDARF DIMENSIONIEREN 4536 : 4540 DIM X(50),Y(50),Z(50) 4560 DIM X1(50),Y1(50),Z1(50) 4570 DIM P1(50),P2(50) 4580 PO=35839:P1=32:P2=32:P3=0:P4=0 4590 RETURN 4600 : 4605 : 5000 REM ----------------- 5010 REM --- ABSPIELEN --- 5020 REM ----------------- 5030 : 5040 IFQ>0ANDA2>0THEN5090 5050 PRINTCHR$(147):PRINT:PRINT:PRINT 5060 PRINTSPC(5)"ES GIBT KEINE GRAFIK" 5070 POKE198,0:WAIT198,1:POKE198,0 5080 RETURN 5090 INPUT"[147]WIEVILE DURCHLAUEFE";DU 5091 IFDU>255ORDU<1THEN5090 5092 PRINT"WIEVIELE BILDER "Q 5093 PRINT"[145]"SPC(19);:INPUTI 5094 IFI>QORI<1THEN5092 5100 : 5105 SYS49152,I,A2,DU:RETURN 5110 : 6000 REM ------------- 6010 REM --- LADEN --- 6020 REM ------------- 6030 : 6040 PRINTCHR$(147):PRINT:PRINT:PRINT:PRINT 6050 INPUT" FILENAME: ";NA$ 6055 IFNA$="M"THENRETURN 6060 OPEN2,8,2,NA$+".GRA,S,R" 6070 OPEN1,8,15:INPUT#1,FE$ 6080 IFFE$="00"THEN6090 6082 CLOSE1:CLOSE2:GOTO6040 6090 GET#2,Q$,A2$ 6100 Q=ASC(Q$):A2=ASC(A2$) 6110 AD=35839-Q*(A2*6+2) 6140 CLOSE2:CLOSE1 6150 AH=INT(AD/256):AL=AD-AH*256 6160 A$=NA$+".GRA,S" 6170 FORI=51000TO51000+LEN(A$)-1 6180 POKEI,ASC(MID$(A$,I-50999,1)) 6190 NEXT 6200 POKE183,LEN(A$) 6210 POKE187,56:POKE188,199 6220 POKE185,0:POKE186,8:POKE147,0 6570 POKE195,AL:POKE196,AH 6580 SYS62648 6590 RETURN 6600 : 6610 : 6620 : 7000 REM ------------------- 7010 REM --- ABSPEICHERN --- 7020 REM ------------------- 7030 : 7040 IFQ>0ANDA2>0THEN7090 7050 PRINTCHR$(147):PRINT:PRINT:PRINT 7060 PRINTSPC(5)"ES GIBT KEINE GRAFIK" 7070 POKE198,0:WAIT198,1:POKE198,0 7080 RETURN 7090 PRINTCHR$(147):PRINT:PRINT:PRINT 7100 INPUT" FILENAME: ";NA$ 7105 IFNA$="M"THENRETURN 7110 OPEN2,8,2,NA$+".GRA,S,W" 7120 OPEN1,8,15:INPUT#1,FE$ 7130 IFFE$="00"THEN7140 7135 CLOSE1:CLOSE2:GOTO7090 7140 PRINT#2,CHR$(Q);CHR$(A2); 7150 FORI=35839-Q*(A2*6+2)TO35839 7160 PRINT#2,CHR$(PEEK(I));:NEXT 7170 CLOSE2:CLOSE1:RETURN 7175 : 7180 : 7185 : 8000 REM ------------------------- 8010 REM --- DATAS FUER PUNKTE --- 8020 REM ------------------------- 8030 : 8040 DATA -20, 10,0 8050 DATA -30, 10,0 8060 DATA -30,-10,0 8070 DATA -20,-10,0 8080 DATA -20, 0,0 8090 DATA -30, 0,0 8100 DATA -15, 10,0 8110 DATA -15, 0,0 8120 DATA - 5, 10,0 8130 DATA - 5, 0,0 8140 DATA - 5,-10,0 8150 DATA 10, 10,0 8160 DATA 5, 5,0 8170 DATA 15,-10,0 8180 DATA 5,-10,0 8190 DATA 5, 0,0 8200 DATA 15, 0,0 8210 DATA 15, -5,0 8220 DATA 5, -5,0 8230 DATA 20,-10,0 8240 DATA 20, 0,0 8250 DATA 20, -5,0 8260 DATA 30, 0,0 8900 DATA 1000,1000,1000 8910 : 9000 REM ---------------------------- 9010 REM --- VERBINDUNGSVOSCHRIFT --- 9020 REM ---------------------------- 9030 : 9040 DATA 1, 2, 2, 3, 3, 4, 4, 5 9050 DATA 5, 6, 7, 8, 8,10, 9,11 9060 DATA 12,13, 14,15, 15,16, 16,17 9070 DATA 17,18, 18,19, 20,21, 22,23 9450 DATA 1000,1000 9460 : 9500 REM -------------------------- 9510 REM --- BEWEGUNGSVOSCHRIFT --- 9520 REM -------------------------- 9530 : 9531 REM XA,YA,ZA,WX,WY,WZ,XB,YB,ZB,E 9550 DATA 0,0, 1 ,0,0,0 ,0,0, 0 ,30 9560 DATA 0,0, 0 ,0,5,0 ,0,0, 0 ,108 9570 DATA 0,0,-30 ,0,0,0 ,0,0,-30 ,1 9580 DATA 0,0, 0 ,5,0,5 ,0,0,.81 ,36 9620 DATA 1000