import math
from openglider.vector import rotation_2d
sign_size = 0.8
[docs]def polygon(p1, p2, rotation=False, num=3, size=sign_size, is_center=False):
"""Polygon"""
if not is_center:
center = (p1+p2)/2
else:
center = p1
diff = (p2-center) * size
return [[center + rotation_2d(math.pi*2*i/num+rotation).dot(diff) for i in range(num)]]
[docs]def triangle(p1, p2, size=sign_size):
return polygon(p1, p2, num=3, size=size)
[docs]def line(p1, p2, rotation=False):
if not rotation:
return [p1, p2]
else:
center = (p1+p2)/2
rot = rotation_2d(rotation)
return [[center + rot.dot(p1-center), center+rot.dot(p2-center)]]
[docs]def cross(p1, p2, rotation=False):
return line(p1, p2, rotation=rotation) + line(p1, p2, rotation=rotation+math.pi/2)