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