§ Скриншот
§ Исходный код
1SCREEN 13
2
3
4DATA -1, 1, 1
5DATA 1, 1, 1
6DATA 1,-1, 1
7DATA -1,-1, 1
8DATA -1, 1,-1
9DATA 1, 1,-1
10DATA 1,-1,-1
11DATA -1,-1,-1
12
13
14DATA 1,0,3,2
15DATA 4,5,6,7
16DATA 0,1,5,4
17DATA 2,3,7,6
18DATA 5,1,2,6
19DATA 0,4,7,3
20
21TYPE vec2
22 x AS SINGLE
23 y AS SINGLE
24END TYPE
25
26TYPE vec3
27 x AS SINGLE
28 y AS SINGLE
29 z AS SINGLE
30END TYPE
31
32DIM v(0 TO 7) AS vec3
33DIM f(0 TO 5, 0 TO 3) AS INTEGER
34DIM p(0 TO 3) AS vec2
35DIM c AS vec3, t AS vec3, r AS vec3, cam AS vec3
36
37
38cam.x = 0: r.x = 0
39cam.y = 0: r.y = 1
40cam.z = 3: r.z = 0
41
42
43FOR i = 0 TO 7: READ v(i).x, v(i).y, v(i).z: NEXT
44FOR i = 0 TO 5: READ f(i, 0), f(i, 1), f(i, 2), f(i, 3): NEXT
45
46DO
47
48
49FOR i = 0 TO 5
50
51
52 FOR j = 0 TO 3
53
54
55 c = v(f(i, j))
56
57
58
59 t.x = c.x
60 t.y = c.y * COS(r.x) + c.z * SIN(r.x)
61 t.z = c.z * COS(r.x) - c.y * SIN(r.x)
62 c = t
63
64
65
66 t.x = c.x * COS(r.y) + c.z * SIN(r.y)
67 t.y = c.y
68 t.z = c.z * COS(r.y) - c.x * SIN(r.y)
69 c = t
70
71
72 c.x = c.x + cam.x
73 c.y = c.y + cam.y
74 c.z = c.z + cam.z
75
76
77 p(j).x = 160 + 100 * c.x / c.z
78 p(j).y = 100 - 100 * c.y / c.z
79
80 NEXT
81
82
83 FOR j = 0 TO 3
84
85
86 ABx = p(1).x - p(0).x: ABy = p(1).y - p(0).y
87 ACx = p(2).x - p(0).x: ACy = p(2).y - p(0).y
88
89
90 IF ACx * ABy < ACy * ABx THEN
91
92 n = (j + 1) MOD 4
93 LINE (p(j).x, p(j).y)-(p(n).x, p(n).y)
94
95 END IF
96
97 NEXT
98
99NEXT
100
101
102DO: i$ = INKEY$: LOOP WHILE i$ = ""
103
104CLS
105
106st = .05
107
108
109IF i$ = "w" THEN r.x = r.x + st
110IF i$ = "s" THEN r.x = r.x - st
111IF i$ = "a" THEN r.y = r.y + st
112IF i$ = "d" THEN r.y = r.y - st
113IF i$ = "q" THEN r.x = r.x + st: r.y = r.y + st
114IF i$ = "e" THEN r.x = r.x - st: r.y = r.y - st
115
116LOCATE 2, 2: PRINT i$
117
118LOOP WHILE i$ <> CHR$(27)