Пример #1
0
def test_polygons():
    random.seed(9831)
    segments = array([
        (0, 0),  # degenerate
        (1, 2),
        (2, 3),
        (3, 1),  # closed
        (4, 5),
        (7, 6),
        (6, 4),
        (4, 8),
        (8, 9),
        (9, 10)
    ])  # nonmanifold
    closed = Nested([(0, ), (1, 2, 3)])
    open = Nested([(4, 5), (7, 6, 4), (4, 8, 9, 10)])

    def closed_key(p):
        p = asarray(p)
        i = argmin(p)
        return tuple(hstack([p[i:], p[:i]]))

    for _ in xrange(4):
        inj = injection(11)
        segs = inj[segments]
        random.shuffle(segs)
        closed2, open2 = SegmentSoup(segs).polygons()
        assert sorted(map(closed_key, closed2)) == sorted(
            closed_key(inj[p]) for p in closed)
        assert sorted(map(tuple, open2)) == sorted(tuple(inj[p]) for p in open)
Пример #2
0
def test_incident_segments():
    mesh = SegmentSoup([(0, 1), (0, 2)])
    incident = mesh.incident_elements()
    print incident.offsets
    print incident.flat
    incident = map(list, mesh.incident_elements())
    assert incident == [[0, 1], [0], [1]]
Пример #3
0
def test_nonmanifold_segments():
    random.seed(71318)
    map = injection(12)
    mesh = SegmentSoup(map[asarray(
        [
            (0, 0),  # degenerate segment
            (1, 2),
            (3, 4),  # open curve
            (4, 5),
            (4, 6),  # two outgoing segments
            (8, 7),
            (9, 7),  # two incoming segments
            (10, 11),
            (11, 10)
        ],
        int32)])  # closed loop
    assert all(mesh.nonmanifold_nodes(False) == sort(map[asarray(xrange(10))]))
    assert all(mesh.nonmanifold_nodes(True) == sort(map[asarray([0, 4, 7])]))
Пример #4
0
def test_adjacent_segments():
    mesh = SegmentSoup([(0, 1), (1, 2)])
    assert all(mesh.adjacent_elements() == [(-1, 1), (0, -1)])
Пример #5
0
def test_bending_triples():
    mesh = SegmentSoup([(7, 8), (8, 9), (8, 10)])
    assert all(mesh.bending_tuples() == [(7, 8, 9), (7, 8, 10), (9, 8, 10)])
Пример #6
0
def test_neighbors():
    mesh = SegmentSoup([(0, 1), (0, 2), (0, 2)])
    assert all(mesh.neighbors() == [[1, 2], [0], [0]])