-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
56 lines (40 loc) · 1.4 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from classes import RenderEngine, Camera3d, Object3d
import keyboard
import time
speed = 0.5
camera = Camera3d(60, 60, 0.25, 6000)
model = Object3d("aircraft.obj", [0, 0, 0], [0, 0, 0])
render = RenderEngine(100, 500)
while True:
model_positions = [camera.calculate_x_y(point) for point in model.points()]
model_positions_normalized = [render.normalize(i, j) for i, j in model_positions]
for i, j in model_positions_normalized:
render.draw_point(i, j)
for edge in model.edges:
for count, value in enumerate(edge):
if count == len(edge) - 1:
continue
i, j = model_positions_normalized[value]
x, y = model_positions_normalized[edge[count + 1]]
render.draw_line(i, j, x, y)
render.print_room()
if keyboard.is_pressed("p"):
quit()
if keyboard.is_pressed("w"):
model.position[2] += speed
if keyboard.is_pressed("s"):
model.position[2] -= speed
if keyboard.is_pressed("a"):
model.position[1] += speed
if keyboard.is_pressed("d"):
model.position[1] -= speed
if keyboard.is_pressed("q"):
model.position[0] += speed
if keyboard.is_pressed("e"):
model.position[0] -= speed
if keyboard.is_pressed("1"):
model.rotation[0] += 0.25
if keyboard.is_pressed("2"):
model.rotation[0] -= 0.25
time.sleep(0.1)
render.clear()