2 ' by Svjatoslav Agejenko
\r
8 DECLARE SUB hline (x1!, y!, x2!, tx1!, ty1!, tx2!, ty2!)
\r
9 DECLARE SUB polygon (x1!, y1!, x2!, y2!, x3!, y3!, tx1!, ty1!, tx2!, ty2!, tx3!, ty3!)
\r
10 DECLARE SUB pline (x1!, y1!, x2!, y2!, tx1!, ty1!, tx2!, ty2!)
\r
11 DECLARE SUB start ()
\r
12 DIM SHARED img(0 TO 100, 0 TO 100)
\r
14 DIM SHARED bufx(0 TO 199)
\r
15 DIM SHARED buftx(0 TO 199)
\r
16 DIM SHARED bufty(0 TO 199)
\r
25 polygon 10, 10, 300, 80, 100, 180, 1, 1, 99, 1, 30, 99
\r
35 polygon x1, y1, x2, y2, x3, y3, 1, 1, 99, 1, 30, 99
\r
36 IF INKEY$ = "" THEN GOTO 3
\r
44 x1 = SIN(n) * 80 + 160
\r
45 y1 = COS(n) * 80 + 100
\r
46 x2 = SIN(n + 2) * 80 + 160
\r
47 y2 = COS(n + 2) * 80 + 100
\r
48 x3 = SIN(n + 4) * 90 + 160
\r
49 y3 = COS(n + 4) * 90 + 100
\r
50 polygon x1, y1, x2, y2, x3, y3, 1, 1, 99, 1, 30, 99
\r
52 IF INKEY$ = "" THEN GOTO 4
\r
60 x1 = SIN(n) * 40 + 50
\r
61 y1 = COS(n) * 40 + 50
\r
62 x2 = SIN(n + 2) * 40 + 50
\r
63 y2 = COS(n + 2) * 40 + 50
\r
64 x3 = SIN(n + 4) * 40 + 50
\r
65 y3 = COS(n + 4) * 40 + 50
\r
66 polygon 1, 50, 300, 1, 100, 180, x1, y1, x2, y2, x3, y3
\r
68 IF INKEY$ = "" THEN GOTO 5
\r
73 SUB hline (x1, y, x2, tx1, ty1, tx2, ty2)
\r
75 IF INT(x2) = INT(x1) THEN GOTO 2
\r
97 rtx = tvx * a / v + ntx1
\r
98 rty = tvy * a / v + nty1
\r
99 PSET (a + nx1, y), img(rtx, rty)
\r
105 SUB pline (x1, y1, x2, y2, tx1, ty1, tx2, ty2)
\r
107 IF m = 0 THEN GOTO 1
\r
116 rx = vx * a / m + x1
\r
117 ry = vy * a / m + y1
\r
118 trx = tvx * a / m + tx1
\r
119 try = tvy * a / m + ty1
\r
120 ' PSET (rx, ry), 14
\r
121 IF bufx(ry) = -1 THEN
\r
126 hline bufx(ry), ry, rx, buftx(ry), bufty(ry), trx, try
\r
133 SUB polygon (x1, y1, x2, y2, x3, y3, tx1, ty1, tx2, ty2, tx3, ty3)
\r
139 pline x1, y1, x2, y2, tx1, ty1, tx2, ty2
\r
140 pline x1, y1, x3, y3, tx1, ty1, tx3, ty3
\r
141 pline x3, y3, x2, y2, tx3, ty3, tx2, ty2
\r
153 CIRCLE (x, y), RND * 20 + 3, c
\r
163 img(x, y) = POINT(x + 20, y + 20)
\r
164 PSET (x + 20, y + 20), 0
\r