home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dimension 64 7
/
Dimension_64_Nr.07_19xx_-_de_Side_A.d64
/
insel
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
1KB
|
56 lines
5 (NULL):x=-200:y=0:z=40:wi=10*(NULL)/180:f=10
10 a=7:mx=159:my=99:dim x(a),y(a),z(a)
15 gosub 1000
20 xx=0:xy=1:xz=0
30 yx=0:yy=0:yz=1
40 vx=10:vy=0:vz=0:v=10:gosub 100
50 get a$:if a$="" then 50
52 if a$="i" then x=x+20:goto 70
54 if a$="," then x=x-20:goto 70
56 if a$="j" then y=y-20:goto 70
58 if a$="l" then y=y+20:goto 70
60 if a$="+" then z=z+20:goto 70
62 if a$="-" then z=z-20:goto 70
64 if a$="o" then w=wi:gosub 600:goto70
66 if a$="u" then w=-wi:gosub 600
70 gosub 100
80 goto 50
100 (NULL):t=1
110 gosub 300:ex=kx:ey=ky
120 for t=2 to a
130 ax=kx:ay=ky
140 gosub 300
150 (NULL) kx,ky,ax,ay
160 nextt
170 (NULL) kx,ky,ex,ey
180 return
300 bx=x(t)-x:by=y(t)-y:bz=z(t)-z
310 l=sqr(bx*bx+by*by+bz*bz)
320 if l<=v then return
330 dx=bx-vx:dy=by-vy:dz=bz-vz
340 if sqr(dx*dx+dy*dy+dz*dz)>=l then return
350 d=bx*xy*yz+xx*yy*bz+yx*by*xz-bz*xy*yx-xz*yy*bx-yz*by*xx
360 d2=-bx*vy*yz-vx*yy*bz-yx*by*vz+bz*vy*yx+vz*yy*bx+yz*by*vx
370 d3=-bx*xy*vz-xx*vy*bz-vx*by*xz+bz*xy*vx+xz*vy*bx+vz*by*xx
380 ky=my-d3/d*f
390 kx=mx+d2/d*f
400 return
600 ox=vx:oy=vy:gosub 650
610 vx=nx:vy=ny
620 ox=xx:oy=xy:gosub 650
630 xx=nx:xy=ny:return
650 nx=ox*cos(w)-oy*sin(w)
660 ny=oy*cos(w)+ox*sin(w)
670 return
1000 for t=1 to a
1010 read x(t),y(t),z(t)
1020 nextt
1030 return
2000 data -50,-50,0
2010 data 50,-50,0
2020 data 50,50,0
2030 data -50,50,0
2040 data -50,-50,0
2050 data 0,0,0
2060 data 0,0,70