initial cammit
[qbasicapps.git] / graphics / presentations / Artifical Intelligence / tehis.bas
1 ' AI presentation\r
2 ' made by Svjatoslav Agejenko\r
3 ' in 2002\r
4 ' H-Page: svjatoslav.eu\r
5 ' E-Mail: svjatoslavagejenko@gmail.com\r
6  \r
7 DECLARE SUB sc10 ()\r
8 DECLARE SUB sc9 ()\r
9 DECLARE SUB sc8 ()\r
10 DECLARE SUB sc7 ()\r
11 DECLARE SUB sc6 ()\r
12 DECLARE SUB inpur ()\r
13 DECLARE SUB sc5 ()\r
14 DECLARE SUB box (x1!, y1!, x2!, y2!)\r
15 DECLARE SUB pri (x!, y!, s!, c!, a$)\r
16 DECLARE SUB getfnt ()\r
17 DECLARE SUB sc4 ()\r
18 DECLARE SUB mkback ()\r
19 DECLARE SUB sc3 ()\r
20 DECLARE SUB calc (x1!, y1!, z1!, x2!, y2!, z2!, x3!, y3!, z3!, c!)\r
21 DECLARE SUB getan (x1!, y1!, x2!, y2!, N!)\r
22 DECLARE SUB rot (zx!, zy!, x1!, y1!, N!)\r
23 DECLARE SUB getcol (x1!, y1!, z1!, x2!, y2!, z2!, x3!, y3!, z3!, c!)\r
24 DECLARE SUB fp1 (x1!, y1!, x2!, y2!, x3!, c!)\r
25 DECLARE SUB fp (x1!, y1!, x2!, y2!, x3!, y3!, c!)\r
26 DECLARE SUB sc2 ()\r
27 DECLARE SUB pal (r!, g!, b!, c!)\r
28 DECLARE SUB sc1 ()\r
29 DECLARE SUB start ()\r
30 DIM SHARED pii\r
31 DIM SHARED pi\r
32 DIM SHARED angl1, angl2\r
33 DIM SHARED font(0 TO 7, 0 TO 7, 32 TO 150)\r
34 start\r
35 'GOTO 6\r
36 sc1\r
37 sc2\r
38 sc3\r
39 sc4\r
40 sc5\r
41 sc6\r
42 sc7\r
43 6\r
44 sc8\r
45 sc10\r
46 sc9\r
47 \r
48 SYSTEM\r
49 \r
50 SUB box (x1, y1, x2, y2)\r
51 \r
52 'FOR a = 0 TO 30\r
53 'IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a))\r
54 'IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10\r
55 'IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10)))\r
56 'NEXT a\r
57 \r
58 FOR y = y1 TO y2\r
59 s = 10\r
60 IF y - y1 <= 10 THEN\r
61 s = (SQR((20 - (y - y1)) * (y - y1)))\r
62 END IF\r
63 \r
64 IF y2 - y <= 10 THEN\r
65 s = (SQR((20 - (y2 - y)) * (y2 - y)))\r
66 END IF\r
67 \r
68 FOR x = x1 - s TO x2 + s\r
69 c = POINT(x, y)\r
70 IF c <= 127 THEN\r
71 c = c + 127\r
72 IF c > 245 THEN c = 245\r
73 PSET (x, y), c\r
74 END IF\r
75 NEXT x\r
76 NEXT y\r
77 \r
78 END SUB\r
79 \r
80 SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c)\r
81 x1 = tx1\r
82 y1 = ty1\r
83 z1 = tz1\r
84 \r
85 x2 = tx2\r
86 y2 = ty2\r
87 z2 = tz2\r
88 \r
89 x3 = tx3\r
90 y3 = ty3\r
91 z3 = tz3\r
92 \r
93 \r
94 'LINE (x1, y1)-(x2, y2), 3\r
95 'LINE (x3, y3)-(x2, y2), 3\r
96 'LINE (x1, y1)-(x3, y3), 3\r
97 \r
98 \r
99 getan x1, y1, x2, y2, n1\r
100 rot x1, y1, x2, y2, -n1\r
101 rot x1, y1, x3, y3, -n1\r
102 \r
103 getan y1, z1, y2, z2, n2\r
104 n2 = n2 + pi / 2\r
105 rot y1, z1, y2, z2, -n2\r
106 rot y1, z1, y3, z3, -n2\r
107 \r
108 getan x1, z1, x3, z3, n3\r
109 n3 = n3 + pi / 2\r
110 rot x1, z1, x2, z2, -n3\r
111 rot x1, z1, x3, z3, -n3\r
112 \r
113 x4 = x1\r
114 y4 = y1\r
115 z4 = z1 + 30\r
116 \r
117 rot x1, z1, x4, z4, n3\r
118 rot y1, z1, y4, z4, n2\r
119 rot x1, y1, x4, y4, n1\r
120 \r
121 'LINE (tx1, ty1)-(x4, y4), 255\r
122 x1 = tx1 + 20\r
123 y1 = ty1 + 10\r
124 a = SQR((x1 - x4) ^ 2 + (y1 - y4) ^ 2)\r
125 c = 49 - a\r
126 IF c < 0 THEN c = 0\r
127 END SUB\r
128 \r
129 SUB fp (x1, y1, x2, y2, x3, y3, c)\r
130 \r
131 \r
132 DIM yb(-100 TO 300)\r
133 \r
134 mx1 = x1\r
135 my1 = y1\r
136 mx2 = x2\r
137 my2 = y2\r
138 GOSUB mkl\r
139 mx1 = x1\r
140 my1 = y1\r
141 mx2 = x3\r
142 my2 = y3\r
143 GOSUB mkl\r
144 mx1 = x3\r
145 my1 = y3\r
146 mx2 = x2\r
147 my2 = y2\r
148 GOSUB mkl\r
149 GOTO 1\r
150 \r
151 mkl:\r
152 IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2\r
153 FOR y = my1 TO my2 - 1\r
154 x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1))\r
155 IF yb(y) = 0 THEN\r
156 yb(y) = x\r
157 ELSE\r
158 LINE (x, y)-(yb(y), y), c\r
159 END IF\r
160 NEXT y\r
161 RETURN\r
162 1\r
163 \r
164 \r
165 'LINE (x1, y1)-(x2, y2), 0\r
166 'LINE (x3, y3)-(x2, y2), 0\r
167 'LINE (x1, y1)-(x3, y3), 0\r
168 \r
169 END SUB\r
170 \r
171 SUB getan (x1, y1, x2, y2, N)\r
172 IF y1 = y2 THEN\r
173 IF x2 > x1 THEN N = pi / 2 ELSE N = pi * 1.5\r
174 GOTO 2\r
175 END IF\r
176 \r
177 IF y2 > y1 THEN\r
178 IF x2 = x1 THEN N = pi: GOTO 2\r
179 IF x2 > x1 THEN\r
180 N = (pi * 1) - ATN((x2 - x1) / (y2 - y1))\r
181 ELSE\r
182 N = pi + ATN((x1 - x2) / (y2 - y1))\r
183 END IF\r
184 ELSE\r
185 IF x2 = x1 THEN N = 0: GOTO 2\r
186 IF x2 > x1 THEN\r
187 N = ATN((x2 - x1) / (y1 - y2))\r
188 ELSE\r
189 N = pi * 2 - ATN((x1 - x2) / (y1 - y2))\r
190 END IF\r
191 END IF\r
192 2\r
193 END SUB\r
194 \r
195 SUB getfnt\r
196 'DIM SHARED font(0 TO 7, 0 TO 7, 10 TO 200)\r
197 \r
198 pal 0, 0, 0, 70\r
199 COLOR 70\r
200 FOR a = 32 TO 150\r
201 LOCATE 1, 1\r
202 PRINT CHR$(a)\r
203 FOR y = 0 TO 7\r
204 FOR x = 0 TO 7\r
205 font(x, y, a) = POINT(x, y)\r
206 NEXT x\r
207 NEXT y\r
208 NEXT a\r
209 \r
210 END SUB\r
211 \r
212 SUB inpur\r
213 a$ = INPUT$(1)\r
214 \r
215 \r
216 END SUB\r
217 \r
218 DEFINT A-Z\r
219 SUB mkback\r
220 CLS\r
221 pal 0, 5, 5, 250\r
222 pal 0, 5, 5, 251\r
223 pal 0, 5, 5, 252\r
224 pal 0, 5, 5, 253\r
225 pal 0, 5, 5, 254\r
226 pal 0, 5, 5, 255\r
227 \r
228 FOR a = 0 TO 127\r
229 OUT &H3C8, a\r
230 OUT &H3C9, SIN(a / 22) * 30 + 30\r
231 OUT &H3C9, SIN(a / 18) * 5 + 5\r
232 OUT &H3C9, COS(a / 12) * 10 + 10\r
233 NEXT a\r
234 \r
235 FOR a = 128 TO 245\r
236 OUT &H3C8, a\r
237 b = a - 128\r
238 OUT &H3C9, SIN(b / 22) * 4 + 10\r
239 OUT &H3C9, SIN(b / 18) * 4 + 10\r
240 OUT &H3C9, COS(b / 12) * 4 + 10\r
241 NEXT a\r
242 \r
243 DIM lm\r
244 lm = 127\r
245 \r
246 \r
247 s = 2 ^ 8\r
248 5\r
249 s = s \ 2\r
250 x2 = (319 \ s) - 1\r
251 y2 = (199 \ s) - 1\r
252 \r
253 FOR y = 0 TO y2\r
254 FOR x = 0 TO x2\r
255 x1 = x * s\r
256 y1 = y * s\r
257 c1 = POINT(x1, y1)\r
258 c2 = POINT(x1 + s, y1)\r
259 c3 = POINT(x1, y1 + s)\r
260 c4 = POINT(x1 + s, y1 + s)\r
261 \r
262 sp = s \ 2\r
263 \r
264 cc2 = ((c1 + c2) / 2) + (RND * 6) - 3\r
265 IF cc2 > lm THEN cc2 = lm\r
266 \r
267 cc3 = ((c1 + c3) / 2) + (RND * 6) - 3\r
268 IF cc3 > lm THEN cc3 = lm\r
269 \r
270 cc4 = ((c2 + c4) / 2) + (RND * 6) - 3\r
271 IF cc4 > lm THEN cc4 = lm\r
272 \r
273 cc5 = ((c3 + c4) / 2) + (RND * 6) - 3\r
274 IF cc5 > lm THEN cc5 = lm\r
275 \r
276 cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3\r
277 IF cc1 > lm THEN cc1 = lm\r
278 \r
279 \r
280 \r
281 PSET (x1 + sp, y1 + sp), cc1\r
282 PSET (x1 + sp, y1), cc2\r
283 PSET (x1, y1 + sp), cc3\r
284 PSET (x1 + s, y1 + sp), cc4\r
285 PSET (x1 + sp, y1 + s), cc5\r
286 \r
287 \r
288 NEXT x\r
289 NEXT y\r
290 IF s > 2 THEN GOTO 5\r
291 \r
292 \r
293 \r
294 END SUB\r
295 \r
296 DEFSNG A-Z\r
297 SUB pal (r, g, b, c)\r
298 IF r < 0 THEN r = 0\r
299 IF g < 0 THEN g = 0\r
300 IF b < 0 THEN b = 0\r
301 IF r > 63 THEN r = 63\r
302 IF g > 63 THEN g = 63\r
303 IF b > 63 THEN b = 63\r
304 \r
305 OUT &H3C8, c\r
306 OUT &H3C9, r\r
307 OUT &H3C9, g\r
308 OUT &H3C9, b\r
309 END SUB\r
310 \r
311 SUB pri (x, y, s, c, a$)\r
312 IF s = 1 THEN\r
313 x2 = x\r
314 FOR a = 1 TO LEN(a$)\r
315 b = ASC(RIGHT$(LEFT$(a$, a), 1))\r
316 IF b > 150 OR b < 32 THEN GOTO 7\r
317 FOR y1 = 0 TO 7\r
318 FOR x1 = 0 TO 7\r
319 c1 = font(x1, y1, b)\r
320 IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c\r
321 NEXT x1\r
322 NEXT y1\r
323 7\r
324 x2 = x2 + 8\r
325 NEXT a\r
326 END IF\r
327 END SUB\r
328 \r
329 SUB rot (zx, zy, x1, y1, N)\r
330 x2 = x1 - zx\r
331 y2 = y1 - zy\r
332 c1 = SIN(N)\r
333 s1 = COS(N)\r
334 x1 = x2 * s1 - y2 * c1 + zx\r
335 y1 = x2 * c1 + y2 * s1 + zy\r
336 END SUB\r
337 \r
338 SUB sc1\r
339 pal 0, 63, 20, 255\r
340 DIM px(0 TO 1000)\r
341 DIM py(0 TO 1000)\r
342 DIM pz(0 TO 1000)\r
343 DIM px1(0 TO 1000)\r
344 DIM py1(0 TO 1000)\r
345 DIM lin1!(0 TO 1500)\r
346 DIM lin2!(0 TO 1500)\r
347 DIM lbx1(1 TO 1500)\r
348 DIM lby1(1 TO 1500)\r
349 DIM lbx2(1 TO 1500)\r
350 DIM lby2(1 TO 1500)\r
351 \r
352 DIM np, nl\r
353 DIM an1, an2, an3\r
354 DIM an1s, an2s, an3s\r
355 DIM inco, inpo\r
356 DIM tim\r
357 DIM nlt\r
358 DIM ehi\r
359 \r
360 tim = 0\r
361 ehi = 1\r
362 \r
363 \r
364 an1 = 0\r
365 an2 = 0\r
366 \r
367 np = -1\r
368 nl = 0\r
369 inco = 0\r
370 inpo = 0\r
371 nlt = 0\r
372 \r
373 pal 40, 40, 40, 254\r
374 COLOR 254\r
375 LOCATE 2, 11\r
376 PRINT "�ks hetk"\r
377 \r
378 OPEN "data.dat" FOR INPUT AS #1\r
379 INPUT #1, a\r
380 INPUT #1, inco\r
381 INPUT #1, inpo\r
382 \r
383 FOR a = 1 TO inco\r
384 INPUT #1, x, y, z\r
385 np = np + 1\r
386 px(np) = x - 100\r
387 py(np) = y\r
388 pz(np) = z\r
389 NEXT a\r
390 \r
391 INPUT #1, b, b, l1, l2, l3\r
392 \r
393 FOR a = 1 TO inpo - 1\r
394 INPUT #1, b, b, l1!, l2!, l3!\r
395 nlin1! = l1!\r
396 nlin2! = l2!\r
397 GOSUB addlin\r
398 nlin1! = l2!\r
399 nlin2! = l3!\r
400 GOSUB addlin\r
401 nlin1! = l1!\r
402 nlin2! = l3!\r
403 GOSUB addlin\r
404 LOCATE 4, 10\r
405 PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis"\r
406 NEXT a\r
407 CLOSE 1\r
408 CLS\r
409 3\r
410 tim = tim + 1\r
411 sj$ = INKEY$\r
412 IF sj$ = "q" THEN END\r
413 \r
414 a = COS(tim / 25)\r
415 an1 = COS(tim / 29) * a\r
416 an2 = (pii / 2) + SIN(tim / 42) * a\r
417 \r
418 s1 = SIN(an1)\r
419 c1 = COS(an1)\r
420 s2 = SIN(an2)\r
421 c2 = COS(an2)\r
422 \r
423 IF ehi >= 1 THEN\r
424 nlt = nlt + ehi\r
425 ehi = ehi + .03\r
426 IF nlt > nl THEN nlt = nl: ehi = 0\r
427 END IF\r
428 \r
429 FOR a = 0 TO np\r
430 x = px(a)\r
431 y = py(a)\r
432 z = pz(a)\r
433 \r
434 z2 = z * s1 + y * c1\r
435 y1 = y * s1 - z * c1\r
436 \r
437 z1 = z2 * s2 + x * c2\r
438 x1 = x * s2 - z2 * c2\r
439 \r
440 \r
441 z1 = z1 + 100\r
442 \r
443 x1 = x1 / z1 * 74 * 2\r
444 y1 = y1 / z1 * 65 * 2\r
445 \r
446 px1(a) = x1 + 160\r
447 py1(a) = y1 + 80\r
448 NEXT a\r
449 \r
450 FOR a = 1 TO nlt\r
451 l1 = lin1!(a)\r
452 l2 = lin2!(a)\r
453 x1 = px1(l1)\r
454 y1 = py1(l1)\r
455 x2 = px1(l2)\r
456 y2 = py1(l2)\r
457 LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
458 LINE (x1, y1)-(x2, y2), 255\r
459 lbx1(a) = x1\r
460 lby1(a) = y1\r
461 lbx2(a) = x2\r
462 lby2(a) = y2\r
463 NEXT a\r
464 SOUND 0, .5\r
465 IF tim < 280 THEN GOTO 3\r
466 GOTO 4\r
467 \r
468 addlin:\r
469 FOR b = 1 TO nl\r
470 IF lin1!(b) = nlin1! THEN IF lin2!(b) = nlin2! THEN RETURN\r
471 IF lin1!(b) = nlin2! THEN IF lin2!(b) = nlin1! THEN RETURN\r
472 NEXT b\r
473 nl = nl + 1\r
474 lin1!(nl) = nlin1!\r
475 lin2!(nl) = nlin2!\r
476 RETURN\r
477 4\r
478 angl1 = an1\r
479 angl2 = an2\r
480 END SUB\r
481 \r
482 SUB sc10\r
483 \r
484 RANDOMIZE 122\r
485 mkback\r
486 \r
487 box 30, 50, 250, 180\r
488 \r
489 pal 32, 64, 32, 250\r
490 y = -8\r
491 pri 30, 70 + y, 1, 250, "    Kasutatud kirjandus:"\r
492 y = y + 20\r
493 pri 30, 70 + y, 1, 250, "An augmented computer vision"\r
494 y = y + 13\r
495 pri 30, 70 + y, 1, 250, "approach for anhanced"\r
496 y = y + 13\r
497 pri 30, 70 + y, 1, 250, "understanding. M.Adjouadi,"\r
498 y = y + 13\r
499 pri 30, 70 + y, 1, 250, "J.Riley;"\r
500 y = y + 13\r
501 pri 30, 70 + y, 1, 250, "Journal of Rehabilitation"\r
502 y = y + 13\r
503 pri 30, 70 + y, 1, 250, "Research & Development,"\r
504 y = y + 13\r
505 pri 30, 70 + y, 1, 250, "Oct 95,Vol. 32 issue 3"\r
506 \r
507 inpur\r
508 \r
509 \r
510 END SUB\r
511 \r
512 SUB sc2\r
513 pal 0, 63, 20, 255\r
514 CLS\r
515 angl1 = 0\r
516 angl2 = 1.5\r
517 DIM px(0 TO 2000)\r
518 DIM py(0 TO 2000)\r
519 DIM pz(0 TO 2000)\r
520 \r
521 DIM rpx(0 TO 2000)\r
522 DIM rpy(0 TO 2000)\r
523 DIM rpz(0 TO 2000)\r
524 \r
525 DIM pol1(1 TO 2000)\r
526 DIM pol2(1 TO 2000)\r
527 DIM pol3(1 TO 2000)\r
528 \r
529 np = 0\r
530 nl = 0\r
531 \r
532 OPEN "data.dat" FOR INPUT AS #1\r
533 INPUT #1, a\r
534 INPUT #1, inco\r
535 INPUT #1, inpo\r
536 \r
537 FOR a = 1 TO inco\r
538 INPUT #1, x, y, z\r
539 px(np) = x - 100\r
540 py(np) = y\r
541 pz(np) = z\r
542 np = np + 1\r
543 NEXT a\r
544 \r
545 INPUT #1, b, b, l1, l2, l3\r
546 \r
547 FOR a = 1 TO inpo - 1\r
548 INPUT #1, b, b, l1, l2, l3\r
549 nl = nl + 1\r
550 pol1(nl) = l1\r
551 pol2(nl) = l2\r
552 pol3(nl) = l3\r
553 NEXT a\r
554 CLOSE 1\r
555 \r
556 s1 = SIN(angl1)\r
557 c1 = COS(angl1)\r
558 s2 = SIN(angl2)\r
559 c2 = COS(angl2)\r
560 \r
561 FOR a = 0 TO np\r
562 x = px(a)\r
563 y = py(a)\r
564 z = pz(a)\r
565 z2 = z * s1 + y * c1\r
566 y1 = y * s1 - z * c1\r
567 z1 = z2 * s2 + x * c2\r
568 x1 = x * s2 - z2 * c2\r
569 z1 = z1 + 100\r
570 x1 = x1 / z1 * 74 * 2\r
571 y1 = y1 / z1 * 65 * 2\r
572 rpx(a) = x1 + 160\r
573 rpy(a) = y1 + 80\r
574 rpz(a) = z1\r
575 NEXT a\r
576 \r
577 'FOR a = 1 TO 63\r
578 'pal COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a\r
579 'NEXT a\r
580 \r
581 FOR a = 1 TO 49\r
582 pal a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a\r
583 NEXT a\r
584 \r
585 DIM polz(1 TO nl)\r
586 \r
587 FOR a = 1 TO nl\r
588 polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a)))\r
589 NEXT a\r
590 \r
591 e = nl\r
592 FOR a = 1 TO nl\r
593 su = -10000\r
594 sun = 1\r
595 FOR b = 1 TO e\r
596 IF polz(b) > su THEN su = polz(b): sun = b\r
597 NEXT b\r
598 \r
599 p1 = pol1(sun)\r
600 p2 = pol2(sun)\r
601 p3 = pol3(sun)\r
602 \r
603 polz(sun) = polz(e)\r
604 pol1(sun) = pol1(e)\r
605 pol2(sun) = pol2(e)\r
606 pol3(sun) = pol3(e)\r
607 e = e - 1\r
608 calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d\r
609 fp INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d)\r
610 'SOUND 0, .07\r
611 NEXT a\r
612 \r
613 \r
614 END SUB\r
615 \r
616 SUB sc3\r
617 DIM buf(1 TO 10000)\r
618 DIM buf1(0 TO 35)\r
619 \r
620 FOR a = 1 TO 20\r
621 SOUND 0, 1\r
622 NEXT a\r
623 FOR a = 0 TO 30\r
624 IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a))\r
625 IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10\r
626 IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10)))\r
627 NEXT a\r
628 \r
629 FOR y = 0 TO 30\r
630 FOR x = 10 TO 300 STEP 10\r
631 GET (x, 0)-(x + 9, 198), buf(1)\r
632 PUT (x, 1), buf(1), PSET\r
633 NEXT x\r
634 FOR a = 1 TO 49\r
635 pal a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a\r
636 NEXT a\r
637 SOUND 0, 1\r
638 LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255\r
639 NEXT y\r
640 \r
641 LOCATE 1, 1\r
642 COLOR 254\r
643 pal 0, 0, 0, 254\r
644 PRINT "Tehisintellekt"\r
645 pal 63, 0, 0, 253\r
646 FOR y = 0 TO 8\r
647 FOR x = 0 TO 120\r
648 c = POINT(x, y)\r
649 IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0\r
650 NEXT x\r
651 FOR x = 0 TO 120\r
652 c = POINT(x, y + 1)\r
653 IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253\r
654 NEXT x\r
655 SOUND 0, 2\r
656 NEXT y\r
657 \r
658 RANDOMIZE 1\r
659 \r
660 FOR a = 1 TO 10\r
661 y = RND * 100 + 50\r
662 FOR x = 10 TO 300 STEP 10\r
663 GET (x, y)-(x + 9, 198), buf(1)\r
664 PUT (x, y - 1), buf(1), PSET\r
665 NEXT x\r
666 NEXT a\r
667 \r
668 COLOR 253\r
669 pal 0, 0, 0, 253\r
670 LOCATE 1\r
671 PRINT " autor:  Svjatoslav Agejenko 30.09.2001 "\r
672 GET (0, 0)-(319, 8), buf(1)\r
673 LOCATE 1\r
674 PRINT "                                        "\r
675 PUT (0, 190), buf(1), PSET\r
676 FOR a = 1 TO 32\r
677 pal 0, a, a * 2, 253\r
678 SOUND 0, 1\r
679 NEXT a\r
680 inpur\r
681 END SUB\r
682 \r
683 SUB sc4\r
684 RANDOMIZE 1\r
685 mkback\r
686 \r
687 box 30, 50, 290, 150\r
688 \r
689 pal 32, 64, 32, 250\r
690 y = 0\r
691 pri 30, 70 + y, 1, 250, " Ruumiliselt laiendatud n�gemise"\r
692 y = y + 16\r
693 pri 30, 70 + y, 1, 250, "l�henemine kujutise tuvastamiseks"\r
694 y = y + 20\r
695 pri 30, 70 + y, 1, 250, "eesm�rk:    + interpriteerimine"\r
696 y = y + 16\r
697 pri 30, 70 + y, 1, 250, "            + automaatjuhtimine"\r
698 \r
699 inpur\r
700 END SUB\r
701 \r
702 SUB sc5\r
703 RANDOMIZE 4\r
704 mkback\r
705 \r
706 box 30, 50, 290, 150\r
707 \r
708 pal 32, 64, 32, 250\r
709 y = -8\r
710 pri 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess"\r
711 y = y + 20\r
712 pri 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;"\r
713 y = y + 12\r
714 pri 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-"\r
715 y = y + 12\r
716 pri 30, 70 + y, 1, 250, "   skaalaline serva avastamine;"\r
717 y = y + 12\r
718 pri 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate"\r
719 y = y + 12\r
720 pri 30, 70 + y, 1, 250, "   rakkude p�him�tted."\r
721 \r
722 \r
723 inpur\r
724 \r
725 END SUB\r
726 \r
727 SUB sc6\r
728 RANDOMIZE 40\r
729 mkback\r
730 \r
731 box 30, 50, 290, 150\r
732 \r
733 pal 32, 64, 32, 250\r
734 y = -8\r
735 pri 30, 70 + y, 1, 250, "* S�gavusinfo ekstraheerimine"\r
736 y = y + 20\r
737 pri 30, 70 + y, 1, 250, "* Ruumilise n�gemise kasutamine"\r
738 y = y + 20\r
739 pri 30, 70 + y, 1, 250, "* Sarnasusm��de"\r
740 y = y + 20\r
741 pri 30, 70 + y, 1, 250, "* Sobitamisstrateegia"\r
742 inpur\r
743 \r
744 \r
745 END SUB\r
746 \r
747 SUB sc7\r
748 pal 0, 0, 0, 0\r
749 FOR a = 0 TO 19\r
750 FOR y = a TO 199 STEP 20\r
751 LINE (0, y)-(319, y), 0\r
752 NEXT y\r
753 SOUND 0, .5\r
754 NEXT a\r
755 \r
756 END SUB\r
757 \r
758 SUB sc8\r
759 FOR a = 1 TO 50\r
760 pal 0, 0, 0, a\r
761 NEXT a\r
762 \r
763 \r
764 DIM px(0 TO 800)\r
765 DIM py(0 TO 800)\r
766 DIM pz(0 TO 800)\r
767 DIM lin1(0 TO 1000)\r
768 DIM lin2(0 TO 1000)\r
769 DIM linc(0 TO 1000)\r
770 DIM lbx1(1 TO 1000)\r
771 DIM lby1(1 TO 1000)\r
772 DIM lbx2(1 TO 1000)\r
773 DIM lby2(1 TO 1000)\r
774 DIM px1(0 TO 800)\r
775 DIM py1(0 TO 800)\r
776 DIM hlkx(1 TO 50)\r
777 DIM hlky(1 TO 50)\r
778 DIM hlkz(1 TO 50)\r
779 DIM hlka\r
780 DIM hlkr\r
781 DIM hlknu\r
782 DIM hlkin\r
783 DIM hlax, hlay, hlaz\r
784 DIM mx, mz, my\r
785 DIM desx, desz\r
786 DIM desa\r
787 \r
788 DIM np, nl\r
789 DIM an1, an2\r
790 DIM tim\r
791 DIM eta\r
792 DIM mil\r
793 DIM miin\r
794 \r
795 miin = 0\r
796 mil = 25\r
797 tim = 0\r
798 eta = 1\r
799 an1 = 0\r
800 an2 = 0\r
801 \r
802 np = 0\r
803 nl = 0\r
804 RANDOMIZE 100\r
805 s = 64\r
806 14\r
807 sp = s / 2\r
808 FOR y = 0 TO 100 STEP s\r
809 FOR x = 0 TO 100 STEP s\r
810 c1 = POINT(x, y)\r
811 c2 = POINT(x + s, y)\r
812 c3 = POINT(x, y + s)\r
813 c4 = POINT(x + s, y + s)\r
814 c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7\r
815 c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7\r
816 c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7\r
817 IF c5 > 50 THEN c5 = 50\r
818 IF c5 < 0 THEN c5 = 0\r
819 IF c6 > 50 THEN c6 = 50\r
820 IF c6 < 0 THEN c6 = 0\r
821 IF c7 > 50 THEN c7 = 50\r
822 IF c7 < 0 THEN c7 = 0\r
823 PSET (x + sp, y + sp), c5\r
824 PSET (x + s, y + sp), c6\r
825 PSET (x + sp, y + s), c7\r
826 NEXT x\r
827 NEXT y\r
828 s = s / 2\r
829 IF s > 1 THEN GOTO 14\r
830 'a$ = INPUT$(1)\r
831 \r
832 FOR z = 1 TO 400 STEP 20\r
833 FOR x = 1 TO 400 STEP 20\r
834 np = np + 1\r
835 px(np) = x\r
836 py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2\r
837 pz(np) = z\r
838 IF x > 1 THEN\r
839 nl = nl + 1\r
840 lin1(nl) = np\r
841 lin2(nl) = np - 1\r
842 linc(nl) = 1\r
843 END IF\r
844 IF z > 1 THEN\r
845 nl = nl + 1\r
846 lin1(nl) = np\r
847 lin2(nl) = np - 20\r
848 linc(nl) = 1\r
849 END IF\r
850 NEXT x\r
851 NEXT z\r
852 \r
853 \r
854 LINE (0, 0)-(319, 199), 0, BF\r
855 \r
856 pal 0, 0, 0, 0\r
857 pal 0, 40, 10, 1\r
858 pal 0, 32, 64, 2\r
859 pal 50, 50, 0, 3\r
860 pal 64, 20, 0, 4\r
861 \r
862 mx = 200\r
863 mz = 200\r
864 kau = 1000\r
865 hlax = 200\r
866 hlay = 0\r
867 hlaz = 200\r
868 desx = 200\r
869 desz = 200\r
870 \r
871 OPEN "data2.dat" FOR INPUT AS #1\r
872 a = 0\r
873 b = 0\r
874 hlkin = np + 1\r
875 15\r
876 INPUT #1, x, y, z\r
877 IF x = 999 THEN GOTO 16\r
878 a = a + 1\r
879 hlkx(a) = x\r
880 hlky(a) = -y\r
881 hlkz(a) = z\r
882 GOTO 15\r
883 16\r
884 INPUT #1, x, y\r
885 IF x = 999 THEN GOTO 17\r
886 nl = nl + 1\r
887 lin1(nl) = x + np + 1\r
888 lin2(nl) = y + np + 1\r
889 linc(nl) = 2\r
890 GOTO 16\r
891 17\r
892 CLOSE #1\r
893 np = np + a\r
894 hlknu = a\r
895 \r
896 RANDOMIZE 10\r
897 c = 3\r
898 FOR a = 1 TO 25\r
899 p = RND * 396 + 2\r
900 x = px(p)\r
901 z = pz(p)\r
902 yy = py(p) - 4\r
903 \r
904 px(np + 1) = x - 5\r
905 py(np + 1) = yy\r
906 pz(np + 1) = z - 5\r
907 \r
908 px(np + 2) = x + 5\r
909 py(np + 2) = yy\r
910 pz(np + 2) = z - 5\r
911 \r
912 px(np + 3) = x + 5\r
913 py(np + 3) = yy\r
914 pz(np + 3) = z + 5\r
915 \r
916 px(np + 4) = x - 5\r
917 py(np + 4) = yy\r
918 pz(np + 4) = z + 5\r
919 \r
920 px(np + 5) = x\r
921 py(np + 5) = yy - 5\r
922 pz(np + 5) = z\r
923 \r
924 \r
925 lin1(nl + 1) = np + 1\r
926 lin2(nl + 1) = np + 2\r
927 linc(nl + 1) = c\r
928 \r
929 lin1(nl + 2) = np + 2\r
930 lin2(nl + 2) = np + 3\r
931 linc(nl + 2) = c\r
932 \r
933 lin1(nl + 3) = np + 3\r
934 lin2(nl + 3) = np + 4\r
935 linc(nl + 3) = c\r
936 \r
937 lin1(nl + 4) = np + 4\r
938 lin2(nl + 4) = np + 1\r
939 linc(nl + 4) = c\r
940 \r
941 lin1(nl + 5) = np + 1\r
942 lin2(nl + 5) = np + 5\r
943 linc(nl + 5) = c\r
944 \r
945 lin1(nl + 6) = np + 2\r
946 lin2(nl + 6) = np + 5\r
947 linc(nl + 6) = c\r
948 \r
949 lin1(nl + 7) = np + 3\r
950 lin2(nl + 7) = np + 5\r
951 linc(nl + 7) = c\r
952 \r
953 lin1(nl + 8) = np + 4\r
954 lin2(nl + 8) = np + 5\r
955 linc(nl + 8) = c\r
956 \r
957 np = np + 5\r
958 nl = nl + 8\r
959 NEXT a\r
960 \r
961 \r
962 10\r
963 SOUND 0, 1\r
964 IF INKEY$ <> "" THEN miin = 1\r
965 IF miin > 150 THEN GOTO 13\r
966 IF miin <> 0 THEN miin = miin + 7\r
967 mx = hlax\r
968 my = 50 - hlay - miin\r
969 mz = hlaz\r
970 \r
971 SELECT CASE eta\r
972 CASE 1\r
973 desx = px(np)\r
974 desz = pz(np)\r
975 getan desx, desz, hlax, hlaz, desa\r
976 IF desa - hlka > pi THEN desa = desa - (pi * 2)\r
977 IF hlka - desa > pi THEN desa = desa + (pi * 2)\r
978 eta = 2\r
979 FOR a = nl - 7 TO nl\r
980 linc(a) = 4\r
981 NEXT a\r
982 CASE 2\r
983 a = desa - hlka\r
984 IF desa = hlka THEN eta = 3\r
985 IF a > .05 THEN a = .05\r
986 IF a < -.05 THEN a = -.05\r
987 hlka = hlka + a\r
988 CASE 3\r
989 x = desx - hlax\r
990 z = desz - hlaz\r
991 v = SQR(x * x + z * z)\r
992 IF v < 5 THEN eta = 4\r
993 v = v / 2\r
994 hlax = hlax + x / v\r
995 hlaz = hlaz + z / v\r
996 CASE 4\r
997 FOR a = np - 4 TO np\r
998 py(a) = py(a) - 1\r
999 NEXT a\r
1000 IF py(np) < 3 - hlay THEN\r
1001 FOR a = nl - 7 TO nl\r
1002 LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
1003 NEXT a\r
1004 np = np - 5\r
1005 nl = nl - 8\r
1006 mil = mil - 1\r
1007 eta = 6\r
1008 IF mil <= 0 THEN eta = 7\r
1009 END IF\r
1010 CASE 6\r
1011 eta = 5\r
1012 CASE 5\r
1013 eta = 1\r
1014 END SELECT\r
1015 \r
1016 y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20))\r
1017 IF hlay > y + 5 THEN hlay = hlay - 1\r
1018 IF hlay < y THEN hlay = hlay + 1\r
1019 IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1\r
1020 IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1\r
1021  \r
1022 s1 = SIN(hlka)\r
1023 c1 = COS(hlka)\r
1024 FOR a = 0 TO hlknu - 5\r
1025 x = hlkx(a + 1)\r
1026 z = hlkz(a + 1)\r
1027 px(a + hlkin) = x * s1 + z * c1 + hlax\r
1028 py(a + hlkin) = hlky(a + 1) - hlay\r
1029 pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
1030 NEXT a\r
1031 \r
1032 hlkr = hlkr + .5\r
1033 s1 = SIN(hlkr)\r
1034 c1 = COS(hlkr)\r
1035 FOR a = hlknu - 4 TO hlknu - 1\r
1036 x = hlkx(a + 1)\r
1037 z = hlkz(a + 1)\r
1038 px(a + hlkin) = x * s1 + z * c1 + hlax\r
1039 py(a + hlkin) = hlky(a + 1) - hlay\r
1040 pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
1041 NEXT a\r
1042 \r
1043 tim = tim + 1\r
1044 \r
1045 an1 = an1 + SIN(tim / 100) / 20\r
1046 an2 = SIN(tim / 42) * .3 + 1.15\r
1047 \r
1048 s1 = SIN(an1)\r
1049 c1 = COS(an1)\r
1050 s2 = SIN(an2)\r
1051 c2 = COS(an2)\r
1052 \r
1053 FOR a = 0 TO np\r
1054 x = px(a) - mx\r
1055 y = py(a) - my\r
1056 z = pz(a) - mz\r
1057 \r
1058 z2 = z * s1 + x * c1\r
1059 x1 = x * s1 - z * c1\r
1060 \r
1061 z1 = z2 * s2 + y * c2\r
1062 y1 = y * s2 - z2 * c2\r
1063 \r
1064 \r
1065 z1 = z1 + kau\r
1066 IF z1 < 1 THEN px1(a) = -1: GOTO 11\r
1067 x1 = x1 / z1 * 74 * 2\r
1068 y1 = y1 / z1 * 65 * 2\r
1069 \r
1070 px1(a) = x1 + 160\r
1071 py1(a) = y1 + 80\r
1072 11\r
1073 NEXT a\r
1074 \r
1075 FOR a = 1 TO nl\r
1076 l1 = lin1!(a)\r
1077 l2 = lin2!(a)\r
1078 x1 = px1(l1)\r
1079 x2 = px1(l2)\r
1080 LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
1081 IF (x1 = -1) OR (x2 = -1) THEN GOTO 12\r
1082 y1 = py1(l1)\r
1083 y2 = py1(l2)\r
1084 LINE (x1, y1)-(x2, y2), linc(a)\r
1085 lbx1(a) = x1\r
1086 lby1(a) = y1\r
1087 lbx2(a) = x2\r
1088 lby2(a) = y2\r
1089 12\r
1090 NEXT a\r
1091 IF kau > 200 THEN kau = kau - 10\r
1092 IF tim < 28000 THEN GOTO 10\r
1093 13\r
1094 END SUB\r
1095 \r
1096 SUB sc9\r
1097 RANDOMIZE 45\r
1098 mkback\r
1099 \r
1100 box 30, 50, 290, 80\r
1101 \r
1102 pal 32, 64, 32, 250\r
1103 y = -8\r
1104 pri 30, 70 + y, 1, 250, "      T�nan t�helepanu eest"\r
1105 inpur\r
1106 \r
1107 \r
1108 \r
1109 END SUB\r
1110 \r
1111 SUB start\r
1112 SCREEN 13\r
1113 pi = 3.141592\r
1114 pii = pi\r
1115 fac = 360 / (pi * 2)\r
1116 getfnt\r
1117 END SUB\r
1118 \r