Exemplo n.º 1
0
class test_rectangle:

    def setUp(self):
        self.rect = Rectangle([0,0],[1,1])

    def test_min_inside(self):
        assert_almost_equal(self.rect.min_distance_point([0.5,0.5]),0)

    def test_min_one_side(self):
        assert_almost_equal(self.rect.min_distance_point([0.5,1.5]),0.5)

    def test_min_two_sides(self):
        assert_almost_equal(self.rect.min_distance_point([2,2]),np.sqrt(2))

    def test_max_inside(self):
        assert_almost_equal(self.rect.max_distance_point([0.5,0.5]),1/np.sqrt(2))

    def test_max_one_side(self):
        assert_almost_equal(self.rect.max_distance_point([0.5,1.5]),np.hypot(0.5,1.5))

    def test_max_two_sides(self):
        assert_almost_equal(self.rect.max_distance_point([2,2]),2*np.sqrt(2))

    def test_split(self):
        less, greater = self.rect.split(0,0.1)
        assert_array_equal(less.maxes,[0.1,1])
        assert_array_equal(less.mins,[0,0])
        assert_array_equal(greater.maxes,[1,1])
        assert_array_equal(greater.mins,[0.1,0])
Exemplo n.º 2
0
class Test_rectangle:
    def setup_method(self):
        self.rect = Rectangle([0, 0], [1, 1])

    def test_min_inside(self):
        assert_almost_equal(self.rect.min_distance_point([0.5, 0.5]), 0)

    def test_min_one_side(self):
        assert_almost_equal(self.rect.min_distance_point([0.5, 1.5]), 0.5)

    def test_min_two_sides(self):
        assert_almost_equal(self.rect.min_distance_point([2, 2]), np.sqrt(2))

    def test_max_inside(self):
        assert_almost_equal(self.rect.max_distance_point([0.5, 0.5]),
                            1 / np.sqrt(2))

    def test_max_one_side(self):
        assert_almost_equal(self.rect.max_distance_point([0.5, 1.5]),
                            np.hypot(0.5, 1.5))

    def test_max_two_sides(self):
        assert_almost_equal(self.rect.max_distance_point([2, 2]),
                            2 * np.sqrt(2))

    def test_split(self):
        less, greater = self.rect.split(0, 0.1)
        assert_array_equal(less.maxes, [0.1, 1])
        assert_array_equal(less.mins, [0, 0])
        assert_array_equal(greater.maxes, [1, 1])
        assert_array_equal(greater.mins, [0.1, 0])
Exemplo n.º 3
0
def det_valid(pts,obsts,movObsts,spd):
    lastPt = pts[0]
    MO = []
    for o, spdX, spdY in movObsts:
        obst = Rectangle(maxes=o.maxes, mins=o.mins)
        MO.append([obst, spdX, spdY])
    for pt in pts:
        for obst in obsts:
            dist = obst.min_distance_point(pt)
            if dist <= 0.2:
                midPT = [(obst.maxes[0]+obst.mins[0])/2, (obst.maxes[1]+obst.mins[1])/2]
                dist = distance.euclidean(midPT, pt)
                return -(dist*4)+999
        time = distance.euclidean(lastPt, pt)/spd
        lastPt = pt
        for obst, spdX, spdY in MO:
            obst.maxes[0] += spdX*time
            obst.mins[0] += spdX*time
            obst.maxes[1] += spdY*time
            obst.mins[1] += spdY*time
            dist = obst.min_distance_point(pt)
            if dist <= 0.5:
                # print(time.__str__())
                midPT = [(obst.maxes[0]+obst.mins[0])/2, (obst.maxes[1]+obst.mins[1])/2]
                dist = distance.euclidean(midPT, pt)
                return -(dist*4)+999
    return 0