home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1984 December / 64er_Magazin_84-12_1984_Markt__Technik_de.d64 / simons-axo (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  7KB  |  257 lines

  1. 1 rem ************************
  2. 2 rem * normale  axonometrie *
  3. 3 rem *                      *
  4. 4 rem *    (c) april 1984    *
  5. 5 rem *     steger peter     *
  6. 6 rem *  bahnhofstrasse 20b  *
  7. 7 rem *  6632 ehrwald/triol  *
  8. 8 rem *  tel : a-05673/2656  *
  9. 9 rem ************************
  10. 10 : print"[147]" : poke 53280,0 : poke 53281,0
  11. 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]"
  12. 25 print"dieses programm stellt  ebenflaechig"
  13. 30 print"[145]begrenzte koerper,nach eingabe bzw einle"
  14. 35 print"[145]sen der eckpunkte und der verbindungsvor"
  15. 40 print"[145]schrift in normaler axonometrie dar."
  16. 45 print"hierbei kann das achsenkreuz beliebig"
  17. 50 print"[145]gewaehlt werden."
  18. 55 print"allerdings  bleibt der ursprung in  der"
  19. 60 print"bildschirmmitte."
  20. 65 print"nach dem zeichnen der figur erscheint"
  21. 70 print"[145]in der linken oberen ecke <fertig> und"
  22. 75 print"man kommt dann mit [150]<f1> oder <return> in"
  23. 76 print"[145]das hauptmenue."
  24. 80 print"die erstellten  koerper koennen dann"
  25. 85 print"auch auf disk abgespeichert werden."
  26. 90 print""tab(11)"< taste druecken >";
  27. 95 poke 198,0 : wait 198,1
  28. 100 clr:dim pt(100,3),zp(100),pa(100,3)
  29. 105 print"[147]soll der koerper von disk eingelesen"
  30. 110 print"werden <j/n> ?"
  31. 115 get a$ : if a$ = "j" then 1000
  32. 120 if a$ <>"n" then 115
  33. 125 print"[147]bitte um die eingabe der einzelnen"
  34. 126 print"eckpunkte mit drei koordinaten (x,y,z)"
  35. 127 print"bei x='ende' wird die eingabe beendet."
  36. 128 print"bei x='\' kann der vorige punkt nochein"
  37. 129 print"mal eingegeben werden."
  38. 130 print"("a")"; : input px$,py,pz : px=val(px$) : if px$="ende" then 200
  39. 135 if px$="\" then a=a-1 : goto 130
  40. 140 pt(a,1) = px
  41. 145 pt(a,2) = py
  42. 150 pt(a,3) = pz
  43. 155 pa(a,1) = pt(a,1)
  44. 160 pa(a,2) = pt(a,2)
  45. 165 pa(a,3) = pt(a,3)
  46. 170 a=a+1 : goto 130
  47. 200 rem
  48. 201 rem verbindungsordnung
  49. 202 rem
  50. 205 ep = a-1 : print"[147]in welcher reihenfolge sollen welche"
  51. 210 print"punkte verbunden werden ?
  52. 215 [153]"'ende' beendet die eingabe wieder."
  53. 220 [153]"'\' laesst die korrektur der vorigen "
  54. 225 [153]"eingabe zu."
  55. 230 [133] "ausgangspunkt";a
  56. 235 zp(0)[178]a
  57. 240 b[178]1 : [153]"" : [143] eingabeschleife
  58. 245 [153]"von ("a") nach : "; : [133] a$ : [139] a$[178] "ende" [167] 270
  59. 250 [139] a$ [178] "\" [167] b[178]b[171]1 : a[178]a1 : [137] 245
  60. 255 a1[178]a : a [178] [197](a$) :
  61. 260 zp(b) [178] a
  62. 265 b[178]b[170]1 : [137] 245
  63. 270 sp[178]b[171]1
  64. 300 [143]
  65. 301 [143] koordinatensystem festlegen
  66. 302 [143]
  67. 305 [153]"loadbestimmen sie nun das achsenkreuz."
  68. 310 [153]"geben sie die winkel zwischen :"
  69. 315 [153]""
  70. 320 [153] [163]19)"then"
  71. 325 [153] [163]19)"then"
  72. 330 [153] " z- und y-achse ";[163]19)"(NULL)(NULL)";[163]24)"z- und x-achse "
  73. 335 [153] [163]18)"(NULL)  (NULL)"[163]24)"ein."
  74. 345 [153] [163]17)"(NULL)    (NULL)"
  75. 350 [143]
  76. 355 [133] " alpha =  120cmdcmdcmdcmdcmd";al:[153][163]25);:[133]"on  beta = 120cmdcmdcmdcmdcmd";bt
  77. 360 al[178]al[172][255][173]180 : bt[178]bt[172][255][173]180
  78. 400 [143]
  79. 401 [143] zeichenrD{$7f}ine
  80. 402 [143]
  81. 405 D 5,0
  82. 410 a[178]zp(0)
  83. 415 xa [178] 160 [171] [191](al)[172]pt(a,2) [170] [191](bt)[172]pt(a,1)
  84. 420 ya [178] 100 [171] pt(a,3) [171] [190](al)[172]pt(a,2) [171] [190](bt)[172]pt(a,1)
  85. 425 [129] b [178] 1 [164] sp
  86. 430 a[178]zp(b)
  87. 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
  88. 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
  89. 441 [139] ys[179]0 [167]ys[178]0
  90. 445 D xa,ya,xs,ys,1
  91. 450 xa[178]xs : ya[178]ys
  92. 455 [130]
  93. 460 [139] ko [178] 1 [167] 1410
  94. 480 d$[178]"<fertig>"
  95. 485 DO 5,5,d$,1,0,7
  96. 490 [161] a$ : [139] a$ [179][177] [199](133) [175] a$ [179][177] [199](13) [167] 490
  97. 500 [143]
  98. 501 [143] hauptmenue
  99. 502 [143]
  100. 505 DG : [153]"load"[163]10) "hauptmenue :"
  101. 510 [153] [163]10)"valvalvalvalvalvalvalvalvalvalvalval"
  102. 515 [153]"(1) = neues achsenkreuz
  103. 520 print"(2) = drehung der figur um oo
  104. 525 [153]"(3) = ausgangszustand herstellen"
  105. 530 [153]"(4) = verschieben der figur"
  106. 535 [153]"(5) = koordinatenachsen einzeichnen"
  107. 545 [153]"(6) = abspeichern der koerperdaten"
  108. 550 [153]"(7) = hardcopy auf drucker
  109. 555 print"(8) = neuer start"
  110. 560 print"(9) = zur grafik zurueck"
  111. 580 print tab(10) "(0) = ende"
  112. 585 get a$ : if a$ <"0" or a$ >"9" or a$="" then 585
  113. 590 on val(a$) goto 300,600,800,1300,1400,1100,1500,100,1220
  114. 595 stop
  115. 600 rem
  116. 601 rem drehung der figur um oo
  117. 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]"
  118. 615 print"bitte waehlen sie aus :"
  119. 620 print"(1) = drehung um die z-achse.
  120. 625 [153]"(2) = drehung um die y-achse.
  121. 630 print"(3) = drehung um die x-achse."
  122. 635 get a :if a < 1 or a >3 then 635
  123. 636 z=5+2*a : D
  124.  z,3,29,1
  125. 640 print tab(7)"bitte den drehwinkel :";:input de : de=de*(NULL)/180
  126. 645 on a goto 650,700,750
  127. 650 rem
  128. 651 rem um die z-achse
  129. 655 for x=0 to ep
  130. 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)
  131. 665 eo = eo+de : if eo >= 2*(NULL) then eo = eo-2*(NULL)
  132. 670 r=sqr(pt(x,1)^2+pt(x,2)^2)
  133. 675 pt(x,1)=sin(eo)*r
  134. 680 pt(x,2)=cos(eo)*r
  135. 685 next
  136. 690 goto 790 : rem return
  137. 700 rem
  138. 701 rem um die y-achse
  139. 705 for x=0 to ep
  140. 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)
  141. 715 eo=eo+de : if eo >= 2*(NULL) then eo=eo-2*(NULL)
  142. 720 r = sqr(pt(x,1)^2+pt(x,3)^2)
  143. 725 pt(x,1)=cos(eo)*r
  144. 730 pt(x,3)=sin(eo)*r
  145. 735 next
  146. 740 goto 790 : rem return
  147. 750 rem
  148. 751 rem um die x-achse
  149. 755 for x=0 to ep
  150. 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)
  151. 765 eo=eo+de : if eo>= 2*(NULL) then eo = eo-2*(NULL)
  152. 766 r = sqr (pt(x,2)^2+pt(x,3)^2)
  153. 770 pt(x,3)=cos(eo)*r
  154. 775 pt(x,2)=sin(eo)*r
  155. 780 next
  156. 790 DP 2 : goto 400 : rem return
  157. 800 rem ausganagszustand
  158. 801 rem
  159. 810 for x = 0 to ep
  160. 820 for y = 1 to 3
  161. 830 pt(x,y)=pa(x,y)
  162. 840 nexty,x
  163. 850 goto 400
  164. 999 rem
  165. 1000 rem daten vom der DR holen
  166. 1001 rem
  167. 1010 open 1,8,15 : rem fehlerkanal
  168. 1015 print"bitte dateinamen :"; : input ns$ : n$=ns$
  169. 1020 ns$=ns$+",s,r"
  170. 1025 open 2,8,2,ns$
  171. 1030 gosub 1250
  172. 1032 if f1 = 62 then close 2 : goto 1015
  173. 1035 print"einlesen der daten von :";n$
  174. 1040 input#2,ep
  175. 1045 input#2,sp
  176. 1050 for x = 0 to ep
  177. 1055 for y = 1 to 3
  178. 1060 input#2,pt(x,y)  : pa(x,y)=pt(x,y)
  179. 1065 next y
  180. 1070 gosub 1250
  181. 1075 next x
  182. 1080 for x = 0 to sp
  183. 1085 input#2,zp(x)
  184. 1090 next x
  185. 1095 gosub 1250
  186. 1097 close 2 : close 1 : goto 300
  187. 1100 DG : rem koerperdaten auf DR
  188. 1101 rem
  189. 1110 print "[147]koerperdaten auf disk:"
  190. 1120 print"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
  191. 1130 print"bitte dateinamen :"; : input ns$
  192. 1140 open 1,8,15 : rem fehlerkanal
  193. 1150 ns$=ns$+",s,w"
  194. 1160 open 2,8,2,ns$
  195. 1162 print#2,ep : print#2,sp
  196. 1165 for x = 0 to ep : rem punkte
  197. 1170 for y = 1 to 3
  198. 1180 print#2,pt(x,y)
  199. 1185 next y
  200. 1190 gosub 1250
  201. 1195 next x
  202. 1200 for x = 0 to sp : rem verbindungsvorschrift
  203. 1205 print#2,zp(x)
  204. 1210 next
  205. 1215 gosub 1250
  206. 1220 close 2 : close 1 : DP 2 : goto 490
  207. 1250 rem
  208. 1251 rem fehlerkanal
  209. 1252 rem
  210. 1255 input#1,f1,f1$,f2,f3 : if f1 = 0 then return : rem kein fehler
  211. 1260 print "[150]fehler auf der disk !"
  212. 1265 print""f1,f1$"  "f3"  "f4
  213. 1270 print"bitte mit <return> bestaetigen,oder mit"
  214. 1275 print"<space> das programm abbrechen !"
  215. 1280 getan$ : if an$ = chr$(13) then return
  216. 1285 if an$ <> chr$(32) then 1280
  217. 1290 close 1 : stop
  218. 1300 rem
  219. 1301 rem verschieben der figur
  220. 1302 rem
  221. 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]"
  222. 1310 print"bitte um den verschiebevektor in der"
  223. 1315 print"form 'x,y,z' !"
  224. 1320 input"vektor :";px,py,pz
  225. 1322 print"bitte etwas geduld ."
  226. 1325 for a=0 to ep
  227. 1335 pt(a,1) = pt(a,1) + px
  228. 1340 pt(a,2) = pt(a,2) + py
  229. 1345 pt(a,3) = pt(a,3) + pz
  230. 1350 next a
  231. 1360 goto400
  232. 1400 rem
  233. 1401 rem koordinatenachsen
  234. 1402 rem
  235. 1405 if ko=1 then ty=0 : ko=0 : goto 1415
  236. 1410 ko=1 : ty = 1
  237. 1415 xs=160-sin(al)*95 : x1=160-sin(al)*105
  238. 1420 ys=100-cos(al)*95 : y1=100-cos(al)*105
  239. 1425 D x1,y1,25,ty,1
  240. 1430 D 160,100,xs,ys,ty : rem y-achse
  241. 1435 xs=160+sin(bt)*95 : x1=160+sin(bt)*102
  242. 1440 ys=100-cos(bt)*95 : y1=100-cos(bt)*105
  243. 1445 D 160,100,xs,ys,ty : rem x-achse
  244. 1450 D x1,y1,24,ty,1
  245. 1455 D 160,100,160,10,ty : rem z=achse
  246. 1460 D 155,0,26,ty,1
  247. 1470 DP 2 : goto 480
  248. 1500 rem
  249. 1501 rem hardDW
  250. 1502 rem
  251. 1505 DO 5,5,d$,0,0,7
  252. 1510 d$="<hardcopy>"
  253. 1515 DO 5,5,d$,1,0,8
  254. 1520 DP 2
  255. 1525 DW
  256. 1530 DO 5,5,d$,0,0,8
  257. 1535 goto 480
  258.