' Svjatoslav Agejenko ' 1999 DECLARE SUB newns () DECLARE SUB getcor () DECLARE SUB show (ang1!, ang2!, ang3!) RANDOMIZE TIMER SCREEN 12 DIM SHARED px(1 TO 1000) DIM SHARED py(1 TO 1000) DIM SHARED pz(1 TO 1000) DIM SHARED ox(1 TO 1000) DIM SHARED oy(1 TO 1000) DIM SHARED mitup DIM SHARED pallx, pally DIM SHARED pallxs, pallys DIM SHARED paln1s, paln2s, paln3s mitup = 500 ' Number of dots getcor nrk1 = 0 nrk2 = 0 nrk3 = 0 1 show nrk1, nrk2, nrk3 nrk1 = nrk1 + paln1s nrk2 = nrk2 + paln2s nrk3 = nrk3 + paln3s pallys = pallys + .1 pallx = pallx + pallxs pally = pally + pallys IF pally > 160 THEN pallys = -pallys: pallxs = pallxs + (RND * 2 - 1): newns IF pallx < -200 THEN pallxs = -pallxs: newns IF pallx > 200 THEN pallxs = -pallxs: newns a$ = INKEY$ IF a$ <> "" THEN CLS : SYSTEM GOTO 1 SUB getcor PRINT "Calculating cordinates" PRINT "Please wait....." FOR a = 1 TO mitup ang1 = RND * 100 ang2 = RND * 100 ang3 = RND * 100 s1 = SIN(ang1) c1 = COS(ang1) s2 = SIN(ang2) c2 = COS(ang2) s3 = SIN(ang3) c3 = COS(ang3) x = 50 y = 0 z = 0 x1 = x * s1 + y * c1 y1 = x * c1 - y * s1 z1 = z * s2 + y1 * c2 y2 = z * c2 - y1 * s2 z2 = z1 * s3 + x1 * c3 x2 = z1 * c3 - x1 * s3 px(a) = x2 py(a) = y2 pz(a) = z2 NEXT a pallxs = 2 + RND pally = -100 newns CLS END SUB SUB newns paln1s = (RND - .5) / 16 paln2s = (RND - .5) / 16 paln3s = (RND - .5) / 16 END SUB SUB show (ang1, ang2, ang3) s1 = SIN(ang1) c1 = COS(ang1) s2 = SIN(ang2) c2 = COS(ang2) s3 = SIN(ang3) c3 = COS(ang3) FOR a = 1 TO mitup x = px(a) y = py(a) z = pz(a) x1 = x * s1 + y * c1 y1 = x * c1 - y * s1 z1 = z * s2 + y1 * c2 y2 = z * c2 - y1 * s2 z2 = z1 * s3 + x1 * c3 x2 = z1 * c3 - x1 * s3 z2 = z2 + 200 x = x2 / z2 * 320 + 320 + pallx y = y2 / z2 * 300 + 240 + pally PSET (ox(a), oy(a)), 0 PSET (x, y), 3 ox(a) = x oy(a) = y NEXT a END SUB