/
distance.py
30 lines (25 loc) · 889 Bytes
/
distance.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
import math
from pyglet import gl
def draw_circle(x, y, radius):
iterations = 20
s = math.sin(2*math.pi / iterations)
c = math.cos(2*math.pi / iterations)
dx, dy = radius, 0
gl.glBegin(gl.GL_LINE_STRIP)
gl.glColor3d(255,0,0)
for i in range(iterations+1):
gl.glVertex2f(x+dx, y+dy)
dx, dy = (dx*c - dy*s), (dy*c + dx*s)
gl.glEnd()
def distance(a, b, wrap_size):
"""Distance in one direction (x or y)"""
result = abs(a - b)
if result > wrap_size / 2:
result = wrap_size - result
return result
def overlaps(a, b, window_size):
"""Returns true if two space objects overlap"""
distance_squared = (distance(a.x, b.x, window_size[0]) ** 2 +
distance(a.y, b.y, window_size[1]) ** 2)
max_distance_squared = (a.radius + b.radius) ** 2
return distance_squared < max_distance_squared