コード例 #1
0
    def test_halfspace_halfspace_same(self):
        hs_1 = HalfSpace(Vector3D(0, 0, 0), Vector3D(0, 1, 0))
        hs_2 = HalfSpace(Vector3D(0, 0, 0), Vector3D(0, 1, 0))
        it = intersect(hs_1, hs_2)

        self.assertTrue(isinstance(it, ConvexPolyhedron))

        self.assertTrue(contains_point(hs_1, Vector3D(*it.hsi.interior_point)))
        self.assertTrue(contains_point(hs_2, Vector3D(*it.hsi.interior_point)))
コード例 #2
0
ファイル: veneer.py プロジェクト: craigiedon/ProbRobScene
def hs_from_pos(s: Object, pos: Vector3D, offset_normal: Vector3D,
                axis_index: int, min_amount: float,
                max_amount: float) -> PointInRegionDistribution:
    dist: float = max_amount - min_amount
    origin: Vector3D = pos + (0.5 * s.dimensions[axis_index] +
                              min_amount) * offset_normal
    return PointInRegionDistribution(HalfSpace(origin, offset_normal, dist))
コード例 #3
0
    def test_halfspace_convpolyh_noIntersection(self):
        hs = HalfSpace(Vector3D(0, 4, 0), Vector3D(0, 1, 0))
        cp = ConvexPolyhedron(
            to_hsi(Cuboid(Vector3D(0.0, 0.0, 0.0), Vector3D(0, 0, 0), 1, 1,
                          1)))
        it = intersect(hs, cp)

        self.assertTrue(isinstance(it, Empty))
コード例 #4
0
    def test_halfspace_convpolyh_intersection(self):
        hs = HalfSpace(Vector3D(0, 1, 0), Vector3D(0, 1, 0))
        cp = ConvexPolyhedron(
            to_hsi(Cuboid(Vector3D(0.0, 0.0, 0.0), Vector3D(0, 0, 0), 5, 5,
                          5)))
        it = intersect(hs, cp)

        self.assertTrue(isinstance(it, ConvexPolyhedron))
        self.assertTrue(contains_point(hs, Vector3D(*it.hsi.interior_point)))
        self.assertTrue(contains_point(cp, Vector3D(*it.hsi.interior_point)))
コード例 #5
0
    def test_halfspace_convpg_noIntersection(self):
        hs = HalfSpace(Vector3D(0, 4, 0), Vector3D(0, 1, 0))
        hsi = HalfspaceIntersection(
            np.array([[1, 0, -3], [0, 1, -3], [-1, 0, 0], [0, -1, 0]]),
            np.array([1.0, 1.0]))
        cp = ConvexPolygon3D(hsi=hsi,
                             origin=Vector3D(0, 0, 0),
                             rot=Vector3D(0, 0, 0))
        it = intersect(hs, cp)

        self.assertTrue(isinstance(it, Empty))
コード例 #6
0
ファイル: veneer.py プロジェクト: craigiedon/ProbRobScene
def hs_from_obj(s: Object, ref_obj: Object, offset_normal: Vector3D,
                axis_index: int, min_amount: float,
                max_amount: float) -> PointInRegionDistribution:
    dist: float = max_amount - min_amount
    unrotated_offset: Vector3D = (0.5 * s.dimensions[axis_index] +
                                  min_amount) * offset_normal
    origin: Vector3D = ref_obj.position + rotate_euler_v3d(
        unrotated_offset, ref_obj.orientation)
    normal = rotate_euler_v3d(offset_normal, ref_obj.orientation)
    return PointInRegionDistribution(
        HalfSpace(origin, normal, max_amount - min_amount))
コード例 #7
0
    def test_halfspace_convpg_intersection(self):
        hs = HalfSpace(Vector3D(0, 2, 0), Vector3D(0, 1, 0))
        hsi = HalfspaceIntersection(
            np.array([[1, 0, -3], [0, 1, -3], [-1, 0, 0], [0, -1, 0]]),
            np.array([1.0, 1.0]))
        cp = ConvexPolygon3D(hsi=hsi,
                             origin=Vector3D(0, 0, 0),
                             rot=Vector3D(0, 0, 0))
        it = intersect(hs, cp)

        int_point_3d: Vector3D = rotate_euler_v3d(
            Vector3D(*it.hsi.interior_point, 0.0), it.rot) + it.origin

        self.assertTrue(isinstance(it, ConvexPolygon3D))
        self.assertTrue(contains_point(hs, int_point_3d))
        self.assertTrue(contains_point(cp, int_point_3d))
コード例 #8
0
    def test_halfspace_halfspace_noIntersectionByDistance(self):
        hs_1 = HalfSpace(Vector3D(0, 1, 0), Vector3D(0, 1, 0))
        hs_2 = HalfSpace(Vector3D(0, 10000, 0), Vector3D(0, 1, 0))
        it = intersect(hs_1, hs_2)

        self.assertTrue(isinstance(it, Empty))