Example #1
0
    def test_changed_order_3d(self):
        # The order of the start and endpoints of the segments should not matter
        dim = 3
        p1 = np.random.rand(1, 3)[0]
        p2 = np.random.rand(1, 3)[0]
        p3 = np.random.rand(1, 3)[0]
        p4 = np.random.rand(1, 3)[0]
        d1, cp11, cp12 = cg.dist_two_segments(p1, p2, p3, p4)
        d2, cp21, cp22 = cg.dist_two_segments(p2, p1, p3, p4)
        d3, cp31, cp32 = cg.dist_two_segments(p1, p2, p4, p3)
        d4, cp41, cp42 = cg.dist_two_segments(p2, p1, p4, p3)
        d5, cp51, cp52 = cg.dist_two_segments(p4, p3, p2, p1)
        assert np.allclose(d1, d2)
        assert np.allclose(d1, d3)
        assert np.allclose(d1, d4)
        assert np.allclose(d1, d5)

        assert np.allclose(cp11, cp21)
        assert np.allclose(cp31, cp11)
        assert np.allclose(cp41, cp11)
        assert np.allclose(cp52, cp11)
        assert np.allclose(cp12, cp22)
        assert np.allclose(cp12, cp32)
        assert np.allclose(cp12, cp42)
        assert np.allclose(cp12, cp51)
Example #2
0
    def test_segment_intersect_2d(self):
        p00, p10, p11, p01 = self.setup_2d_unit_square()
        d, cp_1, cp_2 = cg.dist_two_segments(p00, p11, p10, p01)
        self.assertTrue(d == 0)

        self.assertTrue(np.allclose(cp_1, np.array([0.5, 0.5])))
        self.assertTrue(np.allclose(cp_2, np.array([0.5, 0.5])))
Example #3
0
 def test_intersection_3d(self):
     p000 = np.array([0, 0, 0])
     p111 = np.array([1, 1, 1])
     p100 = np.array([1, 0, 0])
     p011 = np.array([0, 1, 1])
     d, cp1, cp2 = cg.dist_two_segments(p000, p111, p100, p011)
     self.assertTrue(d == 0)
     self.assertTrue(np.allclose(cp1, np.array([0.5, 0.5, 0.5])))
     self.assertTrue(np.allclose(cp2, np.array([0.5, 0.5, 0.5])))
Example #4
0
 def test_share_point(self):
     # Two lines share a point
     p1 = np.array([0, 0])
     p2 = np.array([0, 1])
     p3 = np.array([1, 1])
     d, cp1, cp2 = cg.dist_two_segments(p1, p2, p2, p3)
     self.assertTrue(d == 0)
     self.assertTrue(np.allclose(cp1, p2))
     self.assertTrue(np.allclose(cp2, p2))
Example #5
0
 def test_line_passing(self):
     # Lines not crossing
     p1 = np.array([0, 0])
     p2 = np.array([1, 0])
     p3 = np.array([2, -1])
     p4 = np.array([2, 1])
     d, cp1, cp2 = cg.dist_two_segments(p1, p2, p3, p4)
     self.assertTrue(d == 1)
     self.assertTrue(np.allclose(cp1, np.array([1, 0])))
     self.assertTrue(np.allclose(cp2, np.array([2, 0])))
Example #6
0
 def test_segment_no_intersect_2d(self):
     p00, p10, p11, p01 = self.setup_2d_unit_square()
     d, _, _ = cg.dist_two_segments(p00, p01, p11, p10)
     self.assertTrue(d == 1)