#!/usr/bin/env python import math def angle_to_vector(angle): angle=angle*math.pi/180 return [math.cos(angle), math.sin(angle)] def segments_intersection(line1, line2): xdiff = (line1[0][0] - line1[1][0], line2[0][0] - line2[1][0]) ydiff = (line1[0][1] - line1[1][1], line2[0][1] - line2[1][1]) def det(a, b): return a[0] * b[1] - a[1] * b[0] div = det(xdiff, ydiff) if div == 0: return None d = (det(*line1), det(*line2)) x = det(d, xdiff) / div y = det(d, ydiff) / div if ( min(line1[0][0],line1[1][0]) <= x <= max(line1[0][0],line1[1][0]) and min(line2[0][0],line2[1][0]) <= x <= max(line2[0][0],line2[1][0]) and min(line1[0][1],line1[1][1]) <= y <= max(line1[0][1],line1[1][1]) and min(line2[0][1],line2[1][1]) <= y <= max(line2[0][1],line2[1][1]) ): return x, y return x, y def distance(point1, point2): return math.hypot(point1[0] - point2[0], point1[1] - point2[1])