-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain_cairo.py
68 lines (47 loc) · 1.69 KB
/
main_cairo.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
57
58
59
60
61
62
63
64
65
66
67
68
from simulating_blobs_of_fluid.simulation import Simulation
from simulating_blobs_of_fluid.context_manager import ContextManager
import timeit
from math import pi
def main():
simulation = Simulation(particle_count=1500, box_width=5000, dt=0.016)
context_manager = ContextManager()
total_fps = 0
total_time = 0
total_drawing_time = 0
image_count = 0
ctx = context_manager.ctx
scale = context_manager.width / (simulation.box_width * 2)
i = 0
while True:
i += 1
start = timeit.default_timer()
simulation.step()
end = timeit.default_timer()
time = end - start
total_fps += 1 / time
total_time += time
# if i % 10 != 0:
# continue
image_count += 1
start_drawing = timeit.default_timer()
context_manager.set_background()
ctx.set_source_rgb(255, 0, 0)
for particle in simulation.particles:
position = particle.position
pos_x = (position.x + simulation.box_width) * scale
pos_y = (position.y - simulation.box_height) * -scale
ctx.arc(pos_x, pos_y, 2, 0, 2 * pi)
ctx.fill()
context_manager.save("%06d.png" % image_count)
end_drawing = timeit.default_timer()
time_drawing = end_drawing - start_drawing
total_drawing_time += time_drawing
print("%6d %10.6f %10.6f %10.6f %10.6f" % (i, time, 1 / time, time_drawing, 1 / time_drawing))
print(
"%10.6f %10.6f %10.6f %10.6f" %
(total_time / i,
total_fps / i,
total_drawing_time / image_count,
1 / (total_drawing_time / image_count)))
if __name__ == "__main__":
main()