home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8506b.d64 / 3d-movie-maker (.txt) next >
Commodore BASIC  |  1995-03-30  |  7KB  |  358 lines

  1. 100 REM -----------------------------
  2. 105 REM -- 3D-MOVIE-MAKER          --
  3. 110 REM -- EIN PROGRAMM VON:       --
  4. 115 REM -- DIRK & ARMIN BIERNACZYK --
  5. 120 REM -- AN DER PAPENBURG 41     --
  6. 125 REM -- 4630 BOCHUM 6           --
  7. 130 REM -- TEL.: //////            --
  8. 135 REM -----------------------------
  9. 140 REM (C) 1985 BY ARMIN & DIRK
  10. 145 REM             BIERNACZYK
  11. 150 :
  12. 160 REM ------------------
  13. 170 REM --- HAUPTMENUE ---
  14. 180 REM ------------------
  15. 190 :
  16. 191 IFA=0THENA=1:LOAD"TRICK.OBJ",8,1
  17. 192 :
  18. 195 POKE56,50:CLR:REM SPEICHER HERAB.
  19. 200 PRINTCHR$(147)
  20. 210 PRINTSPC(10)"** 3D-MOVIE-MAKER **"
  21. 220 PRINT:PRINT:PRINT:PRINT
  22. 230 PRINTSPC(9)"1 - GRAFIK ERSTELLEN"
  23. 235 PRINT
  24. 240 PRINTSPC(9)"2 - GRAFIK ABSPIELEN"
  25. 245 PRINT
  26. 250 PRINTSPC(9)"3 - GRAFIK LADEN"
  27. 255 PRINT
  28. 260 PRINTSPC(9)"4 - GRAFIK ABSPEICHERN"
  29. 262 PRINT
  30. 264 PRINTSPC(9)"5 - ENDE"
  31. 265 :
  32. 270 GETW$:IFW$<"1"ORW$>"5"THEN270
  33. 280 W=VAL(W$)
  34. 285 IFW=5THENEND
  35. 290 ONWGOSUB1040,5040,6040,7040
  36. 300 GOTO200
  37. 310 :
  38. 315 :
  39. 320 :
  40. 1000 REM -----------------
  41. 1010 REM --- ERSTELLEN ---
  42. 1020 REM -----------------
  43. 1030 :
  44. 1040 GOSUB4540   :REM VARIABLEN
  45. 1050 GOSUB4040   :REM EINLESEN
  46. 1060 PRINTCHR$(147)"FERTIGE BILDER: "
  47. 1061 IFAN*(A2*6+2)<23000THEN1080
  48. 1062 PRINT"ZU WENIG SPEICHERPLATZ"
  49. 1063 POKE198,0:WAIT198,1:RETURN
  50. 1070 :
  51. 1080 FORQ=1TOAN  :REM ANZAHL DER BILDER
  52. 1085 GOSUB3040   :REM BEWEGEN
  53. 1090 GOSUB2040   :REM BERECHNEN
  54. 1095 GETTA$:IFTA$=" "THENIFQ>1THENSYS49152,Q-1,A2,1
  55. 1100 NEXT
  56. 1110 Q=Q-1
  57. 1120 RETURN
  58. 1130 :
  59. 1135 :
  60. 2000 REM -----------------
  61. 2010 REM --- BERECHNEN ---
  62. 2020 REM -----------------
  63. 2030 :
  64. 2040 REM --- VERSCHIEBEN1 ---
  65. 2050 :
  66. 2060 FORI=1TOA1
  67. 2070 X1(I)=X(I)+X1:Y1(I)=Y(I)+Y1
  68. 2080 Z1(I)=Z(I)+Z1
  69. 2090 NEXT
  70. 2100 :
  71. 2110 REM --- DREHEN ---
  72. 2120 :
  73. 2130 IFW1=0THEN2250
  74. 2140 FORI=1TOA1
  75. 2150 XD=X1(I):YD=Y1(I)
  76. 2160 IFXD=0THENXD=1E-20
  77. 2165 IFYD=0THENYD=1E-20
  78. 2170 R=SQR(XD*XD+YD*YD)
  79. 2180 W=ATN(YD/XD)
  80. 2190 IFXD>0ANDYD<0THENW=W+(null)*2:GOTO2210
  81. 2200 IFXD<0THENW=W+(null)
  82. 2210 W=W+W1
  83. 2220 Y1(I)=SIN(W)*R:X1(I)=COS(W)*R
  84. 2230 NEXT
  85. 2240 :
  86. 2250 IFW2=0THEN2370
  87. 2260 FORI=1TOA1
  88. 2270 ZD=Z1(I):YD=Y1(I)
  89. 2280 IFZD=0THENZD=1E-20
  90. 2285 IFYD=0THENYD=1E-20
  91. 2290 R=SQR(ZD*ZD+YD*YD)
  92. 2300 W=ATN(YD/ZD)
  93. 2310 IFZD>0ANDYD<0THENW=W+(null)*2:GOTO2330
  94. 2320 IFZD<0THENW=W+(null)
  95. 2330 W=W+W2
  96. 2340 Y1(I)=SIN(W)*R:Z1(I)=COS(W)*R
  97. 2350 NEXT
  98. 2360 :
  99. 2370 IFW3=0THEN2510
  100. 2380 FORI=1TOA1
  101. 2390 ZD=Z1(I):XD=X1(I)
  102. 2400 IFZD=0THENZD=1E-20
  103. 2405 IFXD=0THENXD=1E-20
  104. 2410 R=SQR(ZD*ZD+XD*XD)
  105. 2420 W=ATN(XD/ZD)
  106. 2430 IFZD>0ANDXD<0THENW=W+(null)*2:GOTO2450
  107. 2440 IFZD<0THENW=W+(null)
  108. 2450 W=W+W3
  109. 2460 X1(I)=SIN(W)*R:Z1(I)=COS(W)*R
  110. 2470 NEXT
  111. 2480 :
  112. 2490 REM --- UMRECHNEN ---
  113. 2500 :
  114. 2510 FORI=1TOA1
  115. 2530 X1(I)=(X1(I)+X2)*1.01^(Z1(I)+Z2)
  116. 2540 Y1(I)=(Y1(I)+Y2)*1.01^(Z1(I)+Z2)
  117. 2560 NEXT
  118. 2565 REM 1.01 KANN LEICHT GEAENDERT
  119. 2567 REM WERDEN
  120. 2580 :
  121. 2590 PA=0:PB=199
  122. 2600 PO=PO-2
  123. 2601 REM -----------------------------
  124. 2602 REM --- UBERGETRETENE LINIEN  ---
  125. 2603 REM --- BERECHNEN UND POKEN   ---
  126. 2604 REM -----------------------------
  127. 2610 FORI=1TOA2
  128. 2620 X0%=X1(P1(I)):Y1%=Y1(P1(I))
  129. 2630 X2%=X1(P2(I)):Y2%=Y1(P2(I))
  130. 2640 X1%=0:X3%=0:ME=0
  131. 2641 IFX0%> 159ANDX2%> 159THEN2760
  132. 2642 IFX0%<-159ANDX2%<-159THEN2760
  133. 2643 IFY1%<- 99ANDY2%<- 99THEN2760
  134. 2644 IFY1%>  99ANDY2%>  99THEN2760
  135. 2650 IFY1%=Y2%THEN2711
  136. 2655 IFX2%=X0%THEN2690
  137. 2660 M=(Y2%-Y1%)/(X2%-X0%)
  138. 2670 B=-M*X0%+Y1%
  139. 2680 GOTO2720
  140. 2690 IFY1%>99ORY1%<-99THENY1%=99*SGN(Y1%)
  141. 2700 IFY2%>99ORY2%<-99THENY2%=99*SGN(Y2%)
  142. 2710 GOTO 2760
  143. 2711 IFX0%>159ORX0%<-159THENX0%=159*SGN(X0%)
  144. 2712 IFX2%>159ORX2%<-159THENX2%=159*SGN(X2%)
  145. 2713 GOTO 2760
  146. 2720 IFX0%>159ORX0%<-159THENX0%=159*SGN(X0%):Y1%=M*X0%+B
  147. 2730 IFX2%>159ORX2%<-159THENX2%=159*SGN(X2%):Y2%=M*X2%+B
  148. 2740 IFY1%>99ORY1%<-99THENY1%=99*SGN(Y1%):X0%=(Y1%-B)/M
  149. 2750 IFY2%>99ORY2%<-99THENY2%=99*SGN(Y2%):X2%=(Y2%-B)/M
  150. 2760 IFY1%>99ORY1%<-99THENX1%=255:X0%=0:Y1%=0:Y2%=0:X2%=0:GOTO2810
  151. 2770 IFX0%>159ORX0%<-159THENX1%=255:X0%=0:Y1%=0:Y2%=0:X2%=0:GOTO2810
  152. 2780 :
  153. 2790 X0%=X0%+160:X2%=X2%+160
  154. 2791 Y1%=Y1%+100:Y2%=Y2%+100
  155. 2793 IFY1%>PATHENPA=Y1%
  156. 2794 IFY2%>PATHENPA=Y2%
  157. 2795 IFY1%<PBTHENPB=Y1%
  158. 2796 IFY2%<PBTHENPB=Y2%
  159. 2799 IFX0%>255THENX0%=X0%-256:X1%=1
  160. 2800 IFX2%>255THENX2%=X2%-256:X3%=1
  161. 2805 :
  162. 2810 POKEPO,X0%:POKEPO-1,X1%
  163. 2820 POKEPO-2,Y1%:POKEPO-3,X2%
  164. 2830 POKEPO-4,X3%:POKEPO-5,Y2%
  165. 2840 PO=PO-6
  166. 2850 NEXT
  167. 2860 :
  168. 2862 IFPA<PBTHENPA=199:PB=0
  169. 2863 PA=40*((PAOR7)+1)/256+1
  170. 2864 PB=40*(PBAND248)/256
  171. 2866 POKE PO+6*A2+2,INT(P1)-INT(P3)
  172. 2868 POKE PO+6*A2+1,P3
  173. 2870 P1=P2:P2=PA:P3=P4:P4=PB
  174. 2872 PRINTCHR$(19)SPC(16)Q
  175. 2880 RETURN
  176. 2890 :
  177. 2900 :
  178. 3000 REM ---------------
  179. 3010 REM --- BEWEGEN ---
  180. 3020 REM ---------------
  181. 3030 :
  182. 3040 IFE=0THEN3100
  183. 3050 W1=W1+WZ:W2=W2+WX:W3=W3+WY
  184. 3060 X1=X1+XA:Y1=Y1+YA:Z1=Z1+ZA
  185. 3070 X2=X2+XB:Y2=Y2+YB:Z2=Z2+ZB
  186. 3080 E=E-1:RETURN
  187. 3090 :
  188. 3100 READ XA,YA,ZA,WX,WY,WZ,XB,YB,ZB,E
  189. 3110 WX=WX*(null)/180:WY=WY*(null)/180
  190. 3120 WZ=WZ*(null)/180:YA=-YA:YB=-YB
  191. 3130 GOTO3050
  192. 3140 :
  193. 3150 :
  194. 4000 REM ----------------
  195. 4010 REM --- EINLESEN ---
  196. 4020 REM ----------------
  197. 4030 :
  198. 4040 I=0
  199. 4050 I=I+1
  200. 4060 READ X(I),Y(I),Z(I)
  201. 4070 Y(I)=-Y(I)
  202. 4080 IFX(I)<1000THEN4050
  203. 4090 A1=I-1
  204. 4100 I=0
  205. 4110 I=I+1
  206. 4120 READ P1(I),P2(I)
  207. 4130 IFP1(I)<1000THEN4110
  208. 4140 A2=I-1
  209. 4150 :
  210. 4155 AN=0
  211. 4157 READA:IFA=1000THEN4180
  212. 4160 FORI=1TO9:READA:NEXT
  213. 4170 AN=AN+A:GOTO4157
  214. 4180 RESTORE
  215. 4190 READA,A,A
  216. 4200 IFA<1000THEN4190
  217. 4210 READA,A
  218. 4220 IFA<1000THEN4210
  219. 4230 :
  220. 4240 PRINTCHR$(147)"BILDERZAHL  "AN
  221. 4250 PRINTCHR$(19)SPC(11);:INPUT I
  222. 4260 IFI>255ORI>ANTHEN4240
  223. 4270 AN=I
  224. 4280 RETURN
  225. 4290 :
  226. 4300 :
  227. 4500 REM -----------------
  228. 4510 REM --- VARIABLEN ---
  229. 4520 REM -----------------
  230. 4530 :
  231. 4533 REM NACH BEDARF DIMENSIONIEREN
  232. 4536 :
  233. 4540 DIM X(50),Y(50),Z(50)
  234. 4560 DIM X1(50),Y1(50),Z1(50)
  235. 4570 DIM P1(50),P2(50)
  236. 4580 PO=35839:P1=32:P2=32:P3=0:P4=0
  237. 4590 RETURN
  238. 4600 :
  239. 4605 :
  240. 5000 REM -----------------
  241. 5010 REM --- ABSPIELEN ---
  242. 5020 REM -----------------
  243. 5030 :
  244. 5040 IFQ>0ANDA2>0THEN5090
  245. 5050 PRINTCHR$(147):PRINT:PRINT:PRINT
  246. 5060 PRINTSPC(5)"ES GIBT KEINE GRAFIK"
  247. 5070 POKE198,0:WAIT198,1:POKE198,0
  248. 5080 RETURN
  249. 5090 INPUT"[147]WIEVILE DURCHLAUEFE";DU
  250. 5091 IFDU>255ORDU<1THEN5090
  251. 5092 PRINT"WIEVIELE BILDER     "Q
  252. 5093 PRINT"[145]"SPC(19);:INPUTI
  253. 5094 IFI>QORI<1THEN5092
  254. 5100 :
  255. 5105 SYS49152,I,A2,DU:RETURN
  256. 5110 :
  257. 6000 REM -------------
  258. 6010 REM --- LADEN ---
  259. 6020 REM -------------
  260. 6030 :
  261. 6040 PRINTCHR$(147):PRINT:PRINT:PRINT:PRINT
  262. 6050 INPUT"   FILENAME: ";NA$
  263. 6055 IFNA$="M"THENRETURN
  264. 6060 OPEN2,8,2,NA$+".GRA,S,R"
  265. 6070 OPEN1,8,15:INPUT#1,FE$
  266. 6080 IFFE$="00"THEN6090
  267. 6082 CLOSE1:CLOSE2:GOTO6040
  268. 6090 GET#2,Q$,A2$
  269. 6100 Q=ASC(Q$):A2=ASC(A2$)
  270. 6110 AD=35839-Q*(A2*6+2)
  271. 6140 CLOSE2:CLOSE1
  272. 6150 AH=INT(AD/256):AL=AD-AH*256
  273. 6160 A$=NA$+".GRA,S"
  274. 6170 FORI=51000TO51000+LEN(A$)-1
  275. 6180 POKEI,ASC(MID$(A$,I-50999,1))
  276. 6190 NEXT
  277. 6200 POKE183,LEN(A$)
  278. 6210 POKE187,56:POKE188,199
  279. 6220 POKE185,0:POKE186,8:POKE147,0
  280. 6570 POKE195,AL:POKE196,AH
  281. 6580 SYS62648
  282. 6590 RETURN
  283. 6600 :
  284. 6610 :
  285. 6620 :
  286. 7000 REM -------------------
  287. 7010 REM --- ABSPEICHERN ---
  288. 7020 REM -------------------
  289. 7030 :
  290. 7040 IFQ>0ANDA2>0THEN7090
  291. 7050 PRINTCHR$(147):PRINT:PRINT:PRINT
  292. 7060 PRINTSPC(5)"ES GIBT KEINE GRAFIK"
  293. 7070 POKE198,0:WAIT198,1:POKE198,0
  294. 7080 RETURN
  295. 7090 PRINTCHR$(147):PRINT:PRINT:PRINT
  296. 7100 INPUT"    FILENAME: ";NA$
  297. 7105 IFNA$="M"THENRETURN
  298. 7110 OPEN2,8,2,NA$+".GRA,S,W"
  299. 7120 OPEN1,8,15:INPUT#1,FE$
  300. 7130 IFFE$="00"THEN7140
  301. 7135 CLOSE1:CLOSE2:GOTO7090
  302. 7140 PRINT#2,CHR$(Q);CHR$(A2);
  303. 7150 FORI=35839-Q*(A2*6+2)TO35839
  304. 7160 PRINT#2,CHR$(PEEK(I));:NEXT
  305. 7170 CLOSE2:CLOSE1:RETURN
  306. 7175 :
  307. 7180 :
  308. 7185 :
  309. 8000 REM -------------------------
  310. 8010 REM --- DATAS FUER PUNKTE ---
  311. 8020 REM -------------------------
  312. 8030 :
  313. 8040 DATA -20, 10,0
  314. 8050 DATA -30, 10,0
  315. 8060 DATA -30,-10,0
  316. 8070 DATA -20,-10,0
  317. 8080 DATA -20,  0,0
  318. 8090 DATA -30,  0,0
  319. 8100 DATA -15, 10,0
  320. 8110 DATA -15,  0,0
  321. 8120 DATA - 5, 10,0
  322. 8130 DATA - 5,  0,0
  323. 8140 DATA - 5,-10,0
  324. 8150 DATA  10, 10,0
  325. 8160 DATA   5,  5,0
  326. 8170 DATA  15,-10,0
  327. 8180 DATA   5,-10,0
  328. 8190 DATA   5,  0,0
  329. 8200 DATA  15,  0,0
  330. 8210 DATA  15, -5,0
  331. 8220 DATA   5, -5,0
  332. 8230 DATA  20,-10,0
  333. 8240 DATA  20,  0,0
  334. 8250 DATA  20, -5,0
  335. 8260 DATA  30,  0,0
  336. 8900 DATA 1000,1000,1000
  337. 8910 :
  338. 9000 REM ----------------------------
  339. 9010 REM --- VERBINDUNGSVOSCHRIFT ---
  340. 9020 REM ----------------------------
  341. 9030 :
  342. 9040 DATA  1, 2,  2, 3,  3, 4,  4, 5
  343. 9050 DATA  5, 6,  7, 8,  8,10,  9,11
  344. 9060 DATA 12,13, 14,15, 15,16, 16,17
  345. 9070 DATA 17,18, 18,19, 20,21, 22,23
  346. 9450 DATA 1000,1000
  347. 9460 :
  348. 9500 REM --------------------------
  349. 9510 REM --- BEWEGUNGSVOSCHRIFT ---
  350. 9520 REM --------------------------
  351. 9530 :
  352. 9531 REM XA,YA,ZA,WX,WY,WZ,XB,YB,ZB,E
  353. 9550 DATA 0,0,  1 ,0,0,0 ,0,0,  0 ,30
  354. 9560 DATA 0,0,  0 ,0,5,0 ,0,0,  0 ,108
  355. 9570 DATA 0,0,-30 ,0,0,0 ,0,0,-30 ,1
  356. 9580 DATA 0,0,  0 ,5,0,5 ,0,0,.81 ,36
  357. 9620 DATA 1000
  358.