Beispiel #1
0
def test_equality():
    """Test the equality of Polyface3D objects."""
    pts = [
        Point3D(0, 0, 0),
        Point3D(0, 2, 0),
        Point3D(2, 2, 0),
        Point3D(2, 0, 0),
        Point3D(0, 0, 2),
        Point3D(0, 2, 2),
        Point3D(2, 2, 2),
        Point3D(2, 0, 2)
    ]
    face_indices = [[(0, 1, 2, 3)], [(0, 4, 5, 1)], [(0, 3, 7, 4)],
                    [(2, 1, 5, 6)], [(2, 3, 7, 6)], [(4, 5, 6, 7)]]
    face_indices_2 = [[(0, 1, 2, 3)], [(0, 4, 5, 1)], [(0, 3, 7, 4)],
                      [(2, 1, 5, 6)], [(2, 3, 7, 6)]]
    polyface = Polyface3D(pts, face_indices)
    polyface_dup = polyface.duplicate()
    polyface_alt = Polyface3D(pts, face_indices_2)

    assert polyface is polyface
    assert polyface is not polyface_dup
    assert polyface == polyface_dup
    assert hash(polyface) == hash(polyface_dup)
    assert polyface != polyface_alt
    assert hash(polyface) != hash(polyface_alt)
Beispiel #2
0
def test_polyface3d_init_open():
    """Test the initalization of Poyface3D and basic properties of open objects."""
    pts = [
        Point3D(0, 0, 0),
        Point3D(0, 2, 0),
        Point3D(2, 2, 0),
        Point3D(2, 0, 0),
        Point3D(0, 0, 2),
        Point3D(0, 2, 2),
        Point3D(2, 2, 2),
        Point3D(2, 0, 2)
    ]
    face_indices = [[(0, 1, 2, 3)], [(0, 4, 5, 1)], [(0, 3, 7, 4)],
                    [(2, 1, 5, 6)], [(2, 3, 7, 6)]]
    polyface = Polyface3D(pts, face_indices)

    assert len(polyface.vertices) == 8
    assert len(polyface.face_indices) == 5
    assert len(polyface.faces) == 5
    assert len(polyface.edge_indices) == 12
    assert len(polyface.edges) == 12
    assert len(polyface.naked_edges) == 4
    assert len(polyface.non_manifold_edges) == 0
    assert len(polyface.internal_edges) == 8
    assert polyface.area == 20
    assert polyface.volume == 0
    assert polyface.is_solid is False

    for face in polyface.faces:
        assert face.area == 4
        assert face.is_clockwise is False
def test_polyface3d_init_solid():
    """Test the initialization of Polyface3D and basic properties of solid objects."""
    pts = [Point3D(0, 0, 0), Point3D(0, 2, 0), Point3D(2, 2, 0), Point3D(2, 0, 0),
           Point3D(0, 0, 2), Point3D(0, 2, 2), Point3D(2, 2, 2), Point3D(2, 0, 2)]
    face_indices = [[(0, 1, 2, 3)], [(0, 4, 5, 1)], [(0, 3, 7, 4)],
                    [(2, 1, 5, 6)], [(2, 3, 7, 6)], [(4, 5, 6, 7)]]
    polyface = Polyface3D(pts, face_indices)

    assert len(polyface.vertices) == 8
    assert len(polyface.face_indices) == 6
    assert len(polyface.faces) == 6
    assert len(polyface.edge_indices) == 12
    assert len(polyface.edges) == 12
    assert len(polyface.naked_edges) == 0
    assert len(polyface.non_manifold_edges) == 0
    assert len(polyface.internal_edges) == 12
    assert polyface.area == 24
    assert polyface.volume == 8
    assert polyface.is_solid

    for face in polyface.faces:
        assert face.area == 4
        assert face.is_clockwise is False
    assert polyface.faces[0].normal == Vector3D(0, 0, -1)
    assert polyface.faces[1].normal == Vector3D(-1, 0, 0)
    assert polyface.faces[2].normal == Vector3D(0, -1, 0)
    assert polyface.faces[3].normal == Vector3D(0, 1, 0)
    assert polyface.faces[4].normal == Vector3D(1, 0, 0)
    assert polyface.faces[5].normal == Vector3D(0, 0, 1)
def test_is_point_inside():
    """Test the is_point_inside method."""
    pts = [Point3D(0, 0, 0), Point3D(0, 2, 0), Point3D(2, 2, 0), Point3D(2, 0, 0),
           Point3D(0, 0, 2), Point3D(0, 2, 2), Point3D(2, 2, 2), Point3D(2, 0, 2)]
    face_indices = [[(0, 1, 2, 3)], [(0, 4, 5, 1)], [(0, 3, 7, 4)],
                    [(2, 1, 5, 6)], [(2, 3, 7, 6)], [(4, 5, 6, 7)]]
    polyface = Polyface3D(pts, face_indices)

    assert polyface.is_point_inside(Point3D(1, 1, 1)) is True
    assert polyface.is_point_inside(Point3D(4, 1, 1)) is False
    assert polyface.is_point_inside(Point3D(-1, 1, 1)) is False
    assert polyface.is_point_inside(Point3D(4, 4, 4)) is False