1 DECLARE SUB ling (x1%, y1%, x2%, y2%)
\r
2 ' Svjatoslav Agejenko, svjatoslavagejenko@gmail.com, svjatoslav.eu
\r
5 ' Generate stereo image. Red & Green (blue) glasses necessary.
\r
7 ' arrow keys - move around
\r
8 ' 2, 6, 4, 8 - look around
\r
11 ' q, w - change horisontal distance between left and right view
\r
14 DECLARE SUB mkkoll ()
\r
15 DECLARE SUB putkol ()
\r
18 DECLARE SUB start ()
\r
19 DIM SHARED npo, nlo, np, nl
\r
20 DIM SHARED px(1 TO 1000)
\r
21 DIM SHARED py(1 TO 1000)
\r
22 DIM SHARED pz(1 TO 1000)
\r
24 DIM SHARED rpx(1 TO 1000)
\r
25 DIM SHARED rpx2(1 TO 1000)
\r
26 DIM SHARED rpy(1 TO 1000)
\r
28 DIM SHARED orpx(1 TO 1000)
\r
29 DIM SHARED orpx2(1 TO 1000)
\r
30 DIM SHARED orpy(1 TO 1000)
\r
32 DIM SHARED lin1(1 TO 1000)
\r
33 DIM SHARED lin2(1 TO 1000)
\r
34 DIM SHARED linc(1 TO 1000)
\r
35 DIM SHARED olin1(1 TO 1000)
\r
36 DIM SHARED olin2(1 TO 1000)
\r
38 DIM SHARED myx, myy, myz
\r
39 DIM SHARED myxs, myys, myzs
\r
41 DIM SHARED an1s, an2s
\r
42 DIM SHARED kolx(1 TO 10)
\r
43 DIM SHARED koly(1 TO 10)
\r
44 DIM SHARED kolz(1 TO 10)
\r
45 DIM SHARED kolxs(1 TO 10)
\r
46 DIM SHARED kolys(1 TO 10)
\r
47 DIM SHARED kolzs(1 TO 10)
\r
78 IF a$ = CHR$(0) + "H" THEN
\r
79 myzs = myzs - SIN(an1) / 100
\r
80 myxs = myxs - COS(an1) / 100
\r
82 IF a$ = CHR$(0) + "P" THEN
\r
83 myzs = myzs + SIN(an1) / 100
\r
84 myxs = myxs + COS(an1) / 100
\r
86 IF a$ = CHR$(0) + "M" THEN
\r
87 myzs = myzs + COS(an1) / 100
\r
88 myxs = myxs - SIN(an1) / 100
\r
90 IF a$ = CHR$(0) + "K" THEN
\r
91 myzs = myzs - COS(an1) / 100
\r
92 myxs = myxs + SIN(an1) / 100
\r
95 IF a$ = "6" THEN an1s = an1s - .01
\r
96 IF a$ = "4" THEN an1s = an1s + .01
\r
97 IF a$ = "8" THEN an2s = an2s - .01
\r
98 IF a$ = "2" THEN an2s = an2s + .01
\r
99 IF a$ = "+" THEN myys = myys - .01
\r
100 IF a$ = "-" THEN myys = myys + .01
\r
101 IF a$ = "q" THEN difp = difp - .01
\r
102 IF a$ = "w" THEN difp = difp + .01
\r
113 IF a$ = CHR$(27) THEN SYSTEM
\r
126 py(np) = SIN(SQR(x * x + z * z) / 2)
\r
167 SUB ling (x1%, y1%, x2%, y2%)
\r
170 s2 = ABS(y1% - y2%)
\r
171 IF s2 > s THEN s = s2
\r
172 IF s < 2 THEN GOTO 101
\r
177 rx% = xp * a% / s + x1%
\r
178 ry% = yp * a% / s + y1%
\r
179 c% = POINT(rx%, ry%)
\r
180 IF c% = 0 THEN PSET (rx%, ry%), 2
\r
181 IF c% = 1 THEN PSET (rx%, ry%), 3
\r
186 SUB linr (x1, y1, x2, y2)
\r
187 LINE (x1, y1)-(x2, y2), 1
\r
207 IF x > 5 THEN xs = -.1
\r
208 IF z > 5 THEN zs = -.1
\r
209 IF x < -5 THEN xs = .1
\r
210 IF z < -5 THEN zs = .1
\r
211 IF y < .5 THEN ys = RND * .2 + .1
\r
336 kolx(a) = RND * 10 - 5
\r
338 kolz(a) = RND * 10 - 5
\r
339 kolxs(a) = (RND * .5 - .25) / s
\r
340 kolys(a) = (RND * .5 + .1) / s
\r
341 kolzs(a) = (RND * .5 - .25) / s
\r
346 'C3& = Cosine&(Deg3): S3& = Sine&(Deg3)
\r
358 x1 = x * s1 - z * c1
\r
359 z1 = x * c1 + z * s1
\r
360 y1 = y * s2 - z1 * c2
\r
361 z2 = y * c2 + z1 * s2
\r
366 rpx(a) = 160 + ((x1 + difp) / z2 * 200)
\r
367 rpx2(a) = 160 + ((x1 - difp) / z2 * 200)
\r
368 rpy(a) = 100 - (y1 / z2 * 200)
\r
377 IF rpx(l1) = -1 OR rpx(l2) = -1 THEN
\r
379 LINE (rpx(l1), rpy(l1))-(rpx(l2), rpy(l2)), 1
\r
386 IF rpx(l1) = -1 OR rpx(l2) = -1 THEN
\r
388 ling INT(rpx2(l1)), INT(rpy(l1)), INT(rpx2(l2)), INT(rpy(l2))
\r