home *** CD-ROM | disk | FTP | other *** search
/ Dimension 64 7 / Dimension_64_Nr.07_19xx_-_de_Side_A.d64 / insel (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  1KB  |  56 lines

  1. 5 (NULL):x=-200:y=0:z=40:wi=10*(NULL)/180:f=10
  2. 10 a=7:mx=159:my=99:dim x(a),y(a),z(a)
  3. 15 gosub 1000
  4. 20 xx=0:xy=1:xz=0
  5. 30 yx=0:yy=0:yz=1
  6. 40 vx=10:vy=0:vz=0:v=10:gosub 100
  7. 50 get a$:if a$="" then 50
  8. 52 if a$="i" then x=x+20:goto 70
  9. 54 if a$="," then x=x-20:goto 70
  10. 56 if a$="j" then y=y-20:goto 70
  11. 58 if a$="l" then y=y+20:goto 70
  12. 60 if a$="+" then z=z+20:goto 70
  13. 62 if a$="-" then z=z-20:goto 70
  14. 64 if a$="o" then w=wi:gosub 600:goto70
  15. 66 if a$="u" then w=-wi:gosub 600
  16. 70 gosub 100
  17. 80 goto 50
  18. 100 (NULL):t=1
  19. 110 gosub 300:ex=kx:ey=ky
  20. 120 for t=2 to a
  21. 130 ax=kx:ay=ky
  22. 140 gosub 300
  23. 150 (NULL) kx,ky,ax,ay
  24. 160 nextt
  25. 170 (NULL) kx,ky,ex,ey
  26. 180 return
  27. 300 bx=x(t)-x:by=y(t)-y:bz=z(t)-z
  28. 310 l=sqr(bx*bx+by*by+bz*bz)
  29. 320 if l<=v then return
  30. 330 dx=bx-vx:dy=by-vy:dz=bz-vz
  31. 340 if sqr(dx*dx+dy*dy+dz*dz)>=l then return
  32. 350 d=bx*xy*yz+xx*yy*bz+yx*by*xz-bz*xy*yx-xz*yy*bx-yz*by*xx
  33. 360 d2=-bx*vy*yz-vx*yy*bz-yx*by*vz+bz*vy*yx+vz*yy*bx+yz*by*vx
  34. 370 d3=-bx*xy*vz-xx*vy*bz-vx*by*xz+bz*xy*vx+xz*vy*bx+vz*by*xx
  35. 380 ky=my-d3/d*f
  36. 390 kx=mx+d2/d*f
  37. 400 return
  38. 600 ox=vx:oy=vy:gosub 650
  39. 610 vx=nx:vy=ny
  40. 620 ox=xx:oy=xy:gosub 650
  41. 630 xx=nx:xy=ny:return
  42. 650 nx=ox*cos(w)-oy*sin(w)
  43. 660 ny=oy*cos(w)+ox*sin(w)
  44. 670 return
  45. 1000 for t=1 to a
  46. 1010 read x(t),y(t),z(t)
  47. 1020 nextt
  48. 1030 return
  49. 2000 data -50,-50,0
  50. 2010 data 50,-50,0
  51. 2020 data 50,50,0
  52. 2030 data -50,50,0
  53. 2040 data -50,-50,0
  54. 2050 data 0,0,0
  55. 2060 data 0,0,70
  56.