def test_partly_overlapping_segments(self): s0 = np.array([0, 0]) e0 = np.array([2, 0]) s1 = np.array([1, 0]) e1 = np.array([3, 0]) pi = basics.lines_intersect(s0, e0, s1, e1) assert (pi[0, 0] == 1 and pi[0, 1] == 2) or \ (pi[0, 0] == 2 and pi[0, 1] == 1) assert np.allclose(pi[1], 0) # Then test order of arguments pi = basics.lines_intersect(e0, s0, s1, e1) assert (pi[0, 0] == 1 and pi[0, 1] == 2) or \ (pi[0, 0] == 2 and pi[0, 1] == 1) assert np.allclose(pi[1], 0) pi = basics.lines_intersect(s0, e0, e1, s1) assert (pi[0, 0] == 1 and pi[0, 1] == 2) or \ (pi[0, 0] == 2 and pi[0, 1] == 1) assert np.allclose(pi[1], 0) pi = basics.lines_intersect(e0, s0, e1, s1) assert (pi[0, 0] == 1 and pi[0, 1] == 2) or \ (pi[0, 0] == 2 and pi[0, 1] == 1) assert np.allclose(pi[1], 0)
def test_lines_intersect_segments_do_not(self): s0 = np.array([0.3, 0.3]) e0 = np.array([0.5, 0.5]) s1 = np.array([0, 2/3]) e1 = np.array([1, 2/3]) pi = basics.lines_intersect(s0, e0, s1, e1) assert(pi is None or len(pi)==0)
def test_meeting_in_point(self): s0 = np.array([0, 0]) e0 = np.array([1, 0]) s1 = np.array([1, 0]) e1 = np.array([2, 0]) pi = basics.lines_intersect(s0, e0, s1, e1) assert pi[0, 0] == 1 and pi[1, 0] == 0
def test_colinear_not_intersecting(self): s0 = np.array([0, 0]) e0 = np.array([1, 0]) s1 = np.array([2, 0]) e1 = np.array([3, 0]) pi = basics.lines_intersect(s0, e0, s1, e1) assert pi is None
def test_parallel_not_colinear(self): s0 = np.array([0, 0]) e0 = np.array([1, 0]) s1 = np.array([0, 1]) e1 = np.array([1, 1]) pi = basics.lines_intersect(s0, e0, s1, e1) assert pi is None