1 CHDIR ".\qbasicapps\graphics\presentations\Artificial Intelligence"
\r
5 ' made by Svjatoslav Agejenko
\r
7 ' homepage: svjatoslav.eu
\r
8 ' email: svjatoslav@svjatoslav.eu
\r
15 DECLARE SUB inpur ()
\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
21 DECLARE SUB mkback ()
\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
30 DECLARE SUB pal (r!, g!, b!, c!)
\r
32 DECLARE SUB start ()
\r
35 DIM SHARED angl1, angl2
\r
36 DIM SHARED font(0 TO 7, 0 TO 7, 32 TO 150)
\r
53 SUB box (x1, y1, x2, y2)
\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
63 IF y - y1 <= 10 THEN
\r
64 s = (SQR((20 - (y - y1)) * (y - y1)))
\r
67 IF y2 - y <= 10 THEN
\r
68 s = (SQR((20 - (y2 - y)) * (y2 - y)))
\r
71 FOR x = x1 - s TO x2 + s
\r
75 IF c > 245 THEN c = 245
\r
83 SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c)
\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
102 getan x1, y1, x2, y2, n1
\r
103 rot x1, y1, x2, y2, -n1
\r
104 rot x1, y1, x3, y3, -n1
\r
106 getan y1, z1, y2, z2, n2
\r
108 rot y1, z1, y2, z2, -n2
\r
109 rot y1, z1, y3, z3, -n2
\r
111 getan x1, z1, x3, z3, n3
\r
113 rot x1, z1, x2, z2, -n3
\r
114 rot x1, z1, x3, z3, -n3
\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
124 'LINE (tx1, ty1)-(x4, y4), 255
\r
127 a = SQR((x1 - x4) ^ 2 + (y1 - y4) ^ 2)
\r
129 IF c < 0 THEN c = 0
\r
132 SUB fp (x1, y1, x2, y2, x3, y3, c)
\r
135 DIM yb(-100 TO 300)
\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
161 LINE (x, y)-(yb(y), y), c
\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
174 SUB getan (x1, y1, x2, y2, N)
\r
176 IF x2 > x1 THEN N = pi / 2 ELSE N = pi * 1.5
\r
181 IF x2 = x1 THEN N = pi: GOTO 2
\r
183 N = (pi * 1) - ATN((x2 - x1) / (y2 - y1))
\r
185 N = pi + ATN((x1 - x2) / (y2 - y1))
\r
188 IF x2 = x1 THEN N = 0: GOTO 2
\r
190 N = ATN((x2 - x1) / (y1 - y2))
\r
192 N = pi * 2 - ATN((x1 - x2) / (y1 - y2))
\r
199 'DIM SHARED font(0 TO 7, 0 TO 7, 10 TO 200)
\r
208 font(x, y, a) = POINT(x, y)
\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
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
261 c2 = POINT(x1 + s, y1)
\r
262 c3 = POINT(x1, y1 + s)
\r
263 c4 = POINT(x1 + s, y1 + s)
\r
267 cc2 = ((c1 + c2) / 2) + (RND * 6) - 3
\r
268 IF cc2 > lm THEN cc2 = lm
\r
270 cc3 = ((c1 + c3) / 2) + (RND * 6) - 3
\r
271 IF cc3 > lm THEN cc3 = lm
\r
273 cc4 = ((c2 + c4) / 2) + (RND * 6) - 3
\r
274 IF cc4 > lm THEN cc4 = lm
\r
276 cc5 = ((c3 + c4) / 2) + (RND * 6) - 3
\r
277 IF cc5 > lm THEN cc5 = lm
\r
279 cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3
\r
280 IF cc1 > lm THEN cc1 = lm
\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
293 IF s > 2 THEN GOTO 5
\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
314 SUB pri (x, y, s, c, a$)
\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
322 c1 = font(x1, y1, b)
\r
323 IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c
\r
332 SUB rot (zx, zy, x1, y1, N)
\r
337 x1 = x2 * s1 - y2 * c1 + zx
\r
338 y1 = x2 * c1 + y2 * s1 + zy
\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
357 DIM an1s, an2s, an3s
\r
376 pal 40, 40, 40, 254
\r
381 OPEN "data.dat" FOR INPUT AS #1
\r
394 INPUT #1, b, b, l1, l2, l3
\r
396 FOR a = 1 TO inpo - 1
\r
397 INPUT #1, b, b, l1!, l2!, l3!
\r
408 PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis"
\r
415 IF sj$ = "q" THEN END
\r
418 an1 = COS(tim / 29) * a
\r
419 an2 = (pii / 2) + SIN(tim / 42) * a
\r
429 IF nlt > nl THEN nlt = nl: ehi = 0
\r
437 z2 = z * s1 + y * c1
\r
438 y1 = y * s1 - z * c1
\r
440 z1 = z2 * s2 + x * c2
\r
441 x1 = x * s2 - z2 * c2
\r
446 x1 = x1 / z1 * 74 * 2
\r
447 y1 = y1 / z1 * 65 * 2
\r
460 LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0
\r
461 LINE (x1, y1)-(x2, y2), 255
\r
468 IF tim < 280 THEN GOTO 3
\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
490 box 30, 50, 250, 180
\r
492 pal 32, 64, 32, 250
\r
494 pri 30, 70 + y, 1, 250, " Kasutatud kirjandus:"
\r
496 pri 30, 70 + y, 1, 250, "An augmented computer vision"
\r
498 pri 30, 70 + y, 1, 250, "approach for anhanced"
\r
500 pri 30, 70 + y, 1, 250, "understanding. M.Adjouadi,"
\r
502 pri 30, 70 + y, 1, 250, "J.Riley;"
\r
504 pri 30, 70 + y, 1, 250, "Journal of Rehabilitation"
\r
506 pri 30, 70 + y, 1, 250, "Research & Development,"
\r
508 pri 30, 70 + y, 1, 250, "Oct 95,Vol. 32 issue 3"
\r
528 DIM pol1(1 TO 2000)
\r
529 DIM pol2(1 TO 2000)
\r
530 DIM pol3(1 TO 2000)
\r
535 OPEN "data.dat" FOR INPUT AS #1
\r
548 INPUT #1, b, b, l1, l2, l3
\r
550 FOR a = 1 TO inpo - 1
\r
551 INPUT #1, b, b, l1, l2, l3
\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
573 x1 = x1 / z1 * 74 * 2
\r
574 y1 = y1 / z1 * 65 * 2
\r
581 'pal COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a
\r
585 pal a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a
\r
591 polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a)))
\r
599 IF polz(b) > su THEN su = polz(b): sun = b
\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
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
620 DIM buf(1 TO 10000)
\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
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
638 pal a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a
\r
641 LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255
\r
647 PRINT "Tehisintellekt"
\r
652 IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0
\r
655 c = POINT(x, y + 1)
\r
656 IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253
\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
674 PRINT " autor: Svjatoslav Agejenko 30.09.2001 "
\r
675 GET (0, 0)-(319, 8), buf(1)
\r
678 PUT (0, 190), buf(1), PSET
\r
680 pal 0, a, a * 2, 253
\r
690 box 30, 50, 290, 150
\r
692 pal 32, 64, 32, 250
\r
694 pri 30, 70 + y, 1, 250, " Ruumiliselt laiendatud n�gemise"
\r
696 pri 30, 70 + y, 1, 250, "l�henemine kujutise tuvastamiseks"
\r
698 pri 30, 70 + y, 1, 250, "eesm�rk: + interpriteerimine"
\r
700 pri 30, 70 + y, 1, 250, " + automaatjuhtimine"
\r
709 box 30, 50, 290, 150
\r
711 pal 32, 64, 32, 250
\r
713 pri 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess"
\r
715 pri 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;"
\r
717 pri 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-"
\r
719 pri 30, 70 + y, 1, 250, " skaalaline serva avastamine;"
\r
721 pri 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate"
\r
723 pri 30, 70 + y, 1, 250, " rakkude p�him�tted."
\r
734 box 30, 50, 290, 150
\r
736 pal 32, 64, 32, 250
\r
738 pri 30, 70 + y, 1, 250, "* S�gavusinfo ekstraheerimine"
\r
740 pri 30, 70 + y, 1, 250, "* Ruumilise n�gemise kasutamine"
\r
742 pri 30, 70 + y, 1, 250, "* Sarnasusm��de"
\r
744 pri 30, 70 + y, 1, 250, "* Sobitamisstrateegia"
\r
753 FOR y = a TO 199 STEP 20
\r
754 LINE (0, y)-(319, y), 0
\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
786 DIM hlax, hlay, hlaz
\r
811 FOR y = 0 TO 100 STEP s
\r
812 FOR x = 0 TO 100 STEP s
\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
832 IF s > 1 THEN GOTO 14
\r
835 FOR z = 1 TO 400 STEP 20
\r
836 FOR x = 1 TO 400 STEP 20
\r
839 py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2
\r
857 LINE (0, 0)-(319, 199), 0, BF
\r
874 OPEN "data2.dat" FOR INPUT AS #1
\r
880 IF x = 999 THEN GOTO 16
\r
888 IF x = 999 THEN GOTO 17
\r
890 lin1(nl) = x + np + 1
\r
891 lin2(nl) = y + np + 1
\r
924 py(np + 5) = yy - 5
\r
928 lin1(nl + 1) = np + 1
\r
929 lin2(nl + 1) = np + 2
\r
932 lin1(nl + 2) = np + 2
\r
933 lin2(nl + 2) = np + 3
\r
936 lin1(nl + 3) = np + 3
\r
937 lin2(nl + 3) = np + 4
\r
940 lin1(nl + 4) = np + 4
\r
941 lin2(nl + 4) = np + 1
\r
944 lin1(nl + 5) = np + 1
\r
945 lin2(nl + 5) = np + 5
\r
948 lin1(nl + 6) = np + 2
\r
949 lin2(nl + 6) = np + 5
\r
952 lin1(nl + 7) = np + 3
\r
953 lin2(nl + 7) = np + 5
\r
956 lin1(nl + 8) = np + 4
\r
957 lin2(nl + 8) = np + 5
\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
971 my = 50 - hlay - miin
\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
982 FOR a = nl - 7 TO nl
\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
994 v = SQR(x * x + z * z)
\r
995 IF v < 5 THEN eta = 4
\r
997 hlax = hlax + x / v
\r
998 hlaz = hlaz + z / v
\r
1000 FOR a = np - 4 TO np
\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
1011 IF mil <= 0 THEN eta = 7
\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
1027 FOR a = 0 TO hlknu - 5
\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
1038 FOR a = hlknu - 4 TO hlknu - 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
1048 an1 = an1 + SIN(tim / 100) / 20
\r
1049 an2 = SIN(tim / 42) * .3 + 1.15
\r
1061 z2 = z * s1 + x * c1
\r
1062 x1 = x * s1 - z * c1
\r
1064 z1 = z2 * s2 + y * c2
\r
1065 y1 = y * s2 - z2 * c2
\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
1083 LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0
\r
1084 IF (x1 = -1) OR (x2 = -1) THEN GOTO 12
\r
1087 LINE (x1, y1)-(x2, y2), linc(a)
\r
1094 IF kau > 200 THEN kau = kau - 10
\r
1095 IF tim < 28000 THEN GOTO 10
\r
1103 box 30, 50, 290, 80
\r
1105 pal 32, 64, 32, 250
\r
1107 pri 30, 70 + y, 1, 250, " T�nan t�helepanu eest"
\r
1118 fac = 360 / (pi * 2)
\r