2 ' made by Svjatoslav Agejenko
\r
4 ' H-Page: svjatoslav.eu
\r
5 ' E-Mail: svjatoslav@svjatoslav.eu
\r
7 ' Use keys to move around:
\r
8 ' Left, Right, Up, Down look around
\r
15 DECLARE SUB start ()
\r
16 DECLARE SUB savepos (x1%, y1%, x2%, y2%)
\r
17 DECLARE SUB teemaad ()
\r
18 DECLARE SUB setgus ()
\r
19 DECLARE SUB getgus ()
\r
20 DECLARE SUB getgus1 (x1%, y1%, x2%, y2%)
\r
22 DECLARE SUB getcor ()
\r
23 DECLARE SUB mulcor ()
\r
24 DECLARE SUB nait3d ()
\r
25 DECLARE SUB calcsin ()
\r
27 DIM SHARED xn(1000), yn(1000), czn(1000) ' original points
\r
28 DIM SHARED x(1000), y(1000), cz(1000) ' Rotated points
\r
29 DIM SHARED Xs1(1000), Ys1(1000), Xe1(1000), Ye1(1000) ' Old rotated points
\r
30 DIM SHARED pointers1(1000), pointers2(1000) ' Connected points
\r
31 DIM SHARED cosine&(360), sine&(360) ' SIN & COS table
\r
34 DIM SHARED gusx(1 TO 1000)
\r
35 DIM SHARED gusy(1 TO 1000)
\r
40 DIM SHARED gusalgp ' segment
\r
42 DIM SHARED silalgp ' segment
\r
46 DIM SHARED myx, myy, myz
\r
47 DIM SHARED myxp, myyp, myzp
\r
49 DIM SHARED deg1, deg2, deg3
\r
272 ' parempoolsed k�epided
\r
322 ' vasak poolsed k�epided
\r
398 'parempoolesd k�epided
\r
418 'vasakpoolsed k�epided
\r
523 PRINT "Calculating SIN and COS data..."
\r
525 FOR a! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951#
\r
526 cosine&(a) = INT(.5 + COS(a!) * 1024)
\r
527 sine&(a) = INT(.5 + SIN(a!) * 1024)
\r
536 READ x(a), y(a), cz(a)
\r
537 IF x(a) = 999 THEN x(a) = 0: y(a) = 0: cz(a) = 0: GOTO 1
\r
542 READ pointers1(a), pointers2(a)
\r
543 IF pointers1(a) = 999 THEN GOTO 2
\r
567 getgus1 -70, -10, -80, 0
\r
568 getgus1 -80, 0, -80, 20
\r
569 getgus1 -80, 20, -70, 30
\r
570 getgus1 -70, 30, 60, 30
\r
571 getgus1 60, 30, 70, 20
\r
572 getgus1 70, 20, 70, 0
\r
573 getgus1 70, 0, 60, -10
\r
574 getgus1 60, -10, -70, -10
\r
583 SUB getgus1 (x1, y1, x2, y2)
\r
586 mi = SQR(z1 ^ 2 + z2 ^ 2) * 1.017142857#
\r
588 zxp = (x1 - x2) / mi
\r
589 zyp = (y2 - y1) / mi
\r
598 mitgus = mitgus + 1
\r
618 'PRINT deg1, deg2, deg3, speed
\r
620 IF deg1 <= 0 THEN deg1 = deg1 + 360
\r
621 IF deg2 <= 0 THEN deg2 = deg2 + 360
\r
622 IF deg3 <= 0 THEN deg3 = deg3 + 360
\r
624 IF deg1 >= 360 THEN deg1 = deg1 - 360
\r
625 IF deg2 >= 360 THEN deg2 = deg2 - 360
\r
626 IF deg3 >= 360 THEN deg3 = deg3 - 360
\r
628 c1& = cosine&(deg1): s1& = sine&(deg1)
\r
629 c2& = cosine&(deg2): s2& = sine&(deg2)
\r
630 c3& = cosine&(deg3): S3& = sine&(deg3)
\r
632 myx = myx - (s1& * speed / 100)
\r
633 myy = myy - (c1& * speed / 100)
\r
634 myz = myz - (s2& * speed / 100)
\r
636 FOR a = 0 TO np - 1
\r
641 x2 = (x1 * c1& - pz1 * s1&) \ 1024
\r
642 pz2 = (x1 * s1& + pz1 * c1&) \ 1024
\r
644 y2 = (y1 * c2& - pz2 * s2&) \ 1024
\r
645 pz3 = (y1 * s2& + pz2 * c2&) \ 1024
\r
647 x3 = (y2 * c3& - x2 * S3&) \ 1024
\r
648 y3 = (y2 * S3& + x2 * c3&) \ 1024
\r
651 xn(a) = 320 + (x3 / pz3 * 500)
\r
652 yn(a) = 240 + (y3 / pz3 * 500)
\r
661 FOR a1 = 0 TO nl - 1
\r
671 IF Xs1(a1) = -1 OR Xe1(a1) = -1 THEN ELSE LINE (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0
\r
672 IF x1 = -1 OR xn = -1 THEN ELSE LINE (x1, y1)-(xn, yn), 15
\r
675 Xs1(a1) = x1: Ys1(a1) = y1
\r
676 Xe1(a1) = xn: Ye1(a1) = yn
\r
725 gusxp = gusxp + ssu
\r
727 IF smes > 15 THEN smes = 1
\r
728 IF smes < 1 THEN smes = 15
\r
731 FOR a = gusalgp TO gusalgp + 48 STEP 2
\r
732 x(a) = gusx(b) - gusxp
\r
735 x(a + 1) = gusx(b) - gusxp
\r
742 FOR a = gusalgp + 48 TO gusalgp + 94 STEP 2
\r
743 x(a) = gusx(b) - gusxp
\r
746 x(a + 1) = gusx(b) - gusxp
\r
757 IF x(84) > 0 THEN ssu = 1
\r
758 IF x(83) < -400 THEN ssu = -1
\r
806 READ x(np), y(np), cz(np)
\r
807 IF x(np) = 999 THEN x(np) = 0: y(np) = 0: cz(np) = 0: GOTO 3
\r
812 READ pointers1(nl), pointers2(nl)
\r
813 IF pointers1(nl) = 999 THEN GOTO 4
\r
814 pointers1(nl) = pointers1(nl) + silalgp
\r
815 pointers2(nl) = pointers2(nl) + silalgp
\r