initial cammit
[qbasicapps.git] / graphics / bumpmap.bas
1 DECLARE SUB makeSurface ()\r
2 DECLARE SUB animate ()\r
3 DECLARE SUB makeDot (x!, y!)\r
4 DECLARE SUB paintImage ()\r
5 SCREEN 13\r
6 \r
7 DIM SHARED imgh(0 TO 50, 0 TO 50)\r
8 \r
9 PAINT (0, 0), 1\r
10 \r
11 makeSurface\r
12 paintImage\r
13 animate\r
14 \r
15 SUB animate\r
16 \r
17 frm = 0\r
18 1\r
19 frm = frm + 5\r
20 lx = SIN(frm / 100) * 20 + 25\r
21 ly = SIN(frm / 71.32) * 20 + 25\r
22 lx = lx + SIN(frm / 34) * 10\r
23 ly = ly + SIN(frm / 45) * 10\r
24 \r
25 \r
26 FOR y = 2 TO 48\r
27   FOR x = 2 TO 48\r
28     d = SQR((x - lx) ^ 2 + (y - ly) ^ 2)\r
29     b = (30 - d) / 4\r
30   \r
31     v = imgh(x - 1, y) - imgh(x, y)\r
32     bpx = (lx - x) * v\r
33    \r
34     v = imgh(x, y - 1) - imgh(x, y)\r
35     bpy = (ly - y) * v\r
36    \r
37     b = b + (bpx + bpy) / (d / 2)\r
38 \r
39     IF b < 0 THEN b = 0\r
40     IF b > 15 THEN b = 15\r
41     PSET (x + 150, y), 16 + b\r
42   NEXT x\r
43 NEXT y\r
44 \r
45 CIRCLE (lx + 150, ly), 2, 12\r
46 \r
47 \r
48 GOTO 1\r
49 \r
50 \r
51 END SUB\r
52 \r
53 SUB makeDot (x, y)\r
54 \r
55 FOR x1 = -10 TO 10\r
56   FOR y1 = -10 TO 10\r
57     dist = SQR(x1 * x1 + y1 * y1)\r
58     p = 4 - dist\r
59     IF p < 0 THEN p = 0\r
60     imgx = x1 + x\r
61     imgy = y1 + y\r
62     IF imgx < 0 THEN imgx = 0\r
63     IF imgy < 0 THEN imgy = 0\r
64     IF imgx > 50 THEN imgx = 50\r
65     IF imgy > 50 THEN imgy = 50\r
66     imgh(imgx, imgy) = imgh(imgx, imgy) + p\r
67 \r
68  \r
69   NEXT y1\r
70 NEXT x1\r
71 \r
72 END SUB\r
73 \r
74 SUB makeSurface\r
75 FOR x = 0 TO 10\r
76   makeDot RND * 50, RND * 50\r
77 NEXT x\r
78 \r
79 FOR x = 0 TO 45 STEP 2\r
80   makeDot x, x / 2 + 5\r
81 NEXT x\r
82 \r
83 FOR x = 5 TO 30 STEP 2\r
84   makeDot x, -x / 1.2 + 30\r
85 NEXT x\r
86 \r
87 END SUB\r
88 \r
89 SUB paintImage\r
90 FOR x = 0 TO 50\r
91   FOR y = 0 TO 50\r
92     c = imgh(x, y) + 16\r
93     PSET (x, y), c\r
94   NEXT y\r
95 NEXT x\r
96 \r
97 \r
98 END SUB\r
99 \r