initial cammit
[qbasicapps.git] / graphics / 3D / 3dball.bas
1 ' Svjatoslav Agejenko\r
2 ' 1999\r
3 \r
4 DECLARE SUB newns ()\r
5 DECLARE SUB getcor ()\r
6 DECLARE SUB show (ang1!, ang2!, ang3!)\r
7 RANDOMIZE TIMER\r
8 SCREEN 12\r
9 \r
10 DIM SHARED px(1 TO 1000)\r
11 DIM SHARED py(1 TO 1000)\r
12 DIM SHARED pz(1 TO 1000)\r
13 \r
14 DIM SHARED ox(1 TO 1000)\r
15 DIM SHARED oy(1 TO 1000)\r
16 \r
17 DIM SHARED mitup\r
18  \r
19 DIM SHARED pallx, pally\r
20 DIM SHARED pallxs, pallys\r
21 \r
22 DIM SHARED paln1s, paln2s, paln3s\r
23 \r
24 mitup = 500   ' Number of dots\r
25 \r
26 getcor\r
27 \r
28 \r
29 nrk1 = 0\r
30 nrk2 = 0\r
31 nrk3 = 0\r
32 \r
33 1\r
34 show nrk1, nrk2, nrk3\r
35 \r
36 nrk1 = nrk1 + paln1s\r
37 nrk2 = nrk2 + paln2s\r
38 nrk3 = nrk3 + paln3s\r
39 \r
40 pallys = pallys + .1\r
41 pallx = pallx + pallxs\r
42 pally = pally + pallys\r
43 \r
44 IF pally > 160 THEN pallys = -pallys: pallxs = pallxs + (RND * 2 - 1): newns\r
45 IF pallx < -200 THEN pallxs = -pallxs: newns\r
46 IF pallx > 200 THEN pallxs = -pallxs: newns\r
47 \r
48 a$ = INKEY$\r
49 IF a$ <> "" THEN CLS : SYSTEM\r
50 GOTO 1\r
51 \r
52 SUB getcor\r
53 PRINT "Calculating cordinates"\r
54 PRINT "Please wait....."\r
55 \r
56 FOR a = 1 TO mitup\r
57 ang1 = RND * 100\r
58 ang2 = RND * 100\r
59 ang3 = RND * 100\r
60 \r
61 s1 = SIN(ang1)\r
62 c1 = COS(ang1)\r
63 s2 = SIN(ang2)\r
64 c2 = COS(ang2)\r
65 s3 = SIN(ang3)\r
66 c3 = COS(ang3)\r
67 \r
68 x = 50\r
69 y = 0\r
70 z = 0\r
71 \r
72 x1 = x * s1 + y * c1\r
73 y1 = x * c1 - y * s1\r
74 \r
75 z1 = z * s2 + y1 * c2\r
76 y2 = z * c2 - y1 * s2\r
77 \r
78 z2 = z1 * s3 + x1 * c3\r
79 x2 = z1 * c3 - x1 * s3\r
80 \r
81 px(a) = x2\r
82 py(a) = y2\r
83 pz(a) = z2\r
84 \r
85 NEXT a\r
86 \r
87 \r
88 pallxs = 2 + RND\r
89 pally = -100\r
90 \r
91 newns\r
92 \r
93 CLS\r
94 END SUB\r
95 \r
96 SUB newns\r
97 paln1s = (RND - .5) / 16\r
98 paln2s = (RND - .5) / 16\r
99 paln3s = (RND - .5) / 16\r
100 END SUB\r
101 \r
102 SUB show (ang1, ang2, ang3)\r
103 \r
104 \r
105 s1 = SIN(ang1)\r
106 c1 = COS(ang1)\r
107 s2 = SIN(ang2)\r
108 c2 = COS(ang2)\r
109 s3 = SIN(ang3)\r
110 c3 = COS(ang3)\r
111 \r
112 \r
113 FOR a = 1 TO mitup\r
114 \r
115 x = px(a)\r
116 y = py(a)\r
117 z = pz(a)\r
118 \r
119 x1 = x * s1 + y * c1\r
120 y1 = x * c1 - y * s1\r
121 \r
122 z1 = z * s2 + y1 * c2\r
123 y2 = z * c2 - y1 * s2\r
124 \r
125 z2 = z1 * s3 + x1 * c3\r
126 x2 = z1 * c3 - x1 * s3\r
127 \r
128 z2 = z2 + 200\r
129 \r
130 x = x2 / z2 * 320 + 320 + pallx\r
131 y = y2 / z2 * 300 + 240 + pally\r
132 \r
133 PSET (ox(a), oy(a)), 0\r
134 PSET (x, y), 3\r
135 ox(a) = x\r
136 oy(a) = y\r
137 \r
138 NEXT a\r
139 \r
140 \r
141 \r
142 \r
143 END SUB\r
144 \r