Beispiel #1
0
def test_adding_point_on_standard_simplex_edge(dim):
    pts = _make_standard_simplex(dim)
    t = Triangulation(pts)
    on_edge = np.average(pts[:2], axis=0)

    _add_point_with_check(t, on_edge)
    _check_triangulation_is_valid(t)

    other_points = list(range(2, dim + 2))

    new_simplices = {(0, *other_points), (1, *other_points)}

    assert new_simplices == t.simplices

    assert np.isclose(np.sum(t.volumes()), _standard_simplex_volume(dim))
Beispiel #2
0
def test_adding_point_on_standard_simplex_face(dim):
    pts = _make_standard_simplex(dim)
    t = Triangulation(pts)
    on_simplex = np.average(pts[1:], axis=0)

    _add_point_with_check(t, on_simplex)
    added_point = dim + 1  # *index* of added point

    _check_triangulation_is_valid(t)

    other_points = list(range(1, dim + 1))
    expected_simplices = {
        (0, *points, added_point)
        for points in itertools.combinations(other_points, dim - 1)
    }
    assert expected_simplices == t.simplices

    assert np.isclose(np.sum(t.volumes()), _standard_simplex_volume(dim))
Beispiel #3
0
def test_adding_point_inside_standard_simplex(dim, provide_simplex):
    t = Triangulation(_make_standard_simplex(dim))
    first_simplex = tuple(range(dim + 1))
    inside_simplex = (0.1, ) * dim

    if provide_simplex:
        _add_point_with_check(t, inside_simplex, simplex=first_simplex)
    else:
        _add_point_with_check(t, inside_simplex)

    added_point = dim + 1  # *index* of added point

    _check_triangulation_is_valid(t)

    other_points = list(range(dim + 1))
    expected_simplices = {
        (*points, added_point)
        for points in itertools.combinations(other_points, dim)
    }
    assert expected_simplices == t.simplices

    assert np.isclose(np.sum(t.volumes()), _standard_simplex_volume(dim))