Beispiel #1
0
def test_convex_hull():
    vec1 = (1, 3)
    vec2 = (-1, 0, 1)
    vec3 = (2, 4, 5, 10)
    scalar = 0.5

    # Grid as set
    grid = TensorGrid(vec1, vec2, vec3, as_midp=False)
    begin = (vec1[0], vec2[0], vec3[0])
    end = (vec1[-1], vec2[-1], vec3[-1])
    chull = odl.IntervalProd(begin, end)
    assert grid.convex_hull() == chull

    # With degenerate axis
    grid = TensorGrid(vec1, vec2, scalar, as_midp=False)
    begin = (vec1[0], vec2[0], scalar)
    end = (vec1[-1], vec2[-1], scalar)
    chull = odl.IntervalProd(begin, end)
    assert grid.convex_hull() == chull

    # Grid as tesselation
    grid = TensorGrid(vec1, vec2, vec3, as_midp=True)
    cs1 = (2, 2)
    cs2 = (1, 1, 1)
    cs3 = (2, 1.5, 3, 5)
    begin = (vec1[0] - cs1[0] / 2.,
             vec2[0] - cs2[0] / 2.,
             vec3[0] - cs3[0] / 2.)
    end = (vec1[-1] + cs1[-1] / 2.,
           vec2[-1] + cs2[-1] / 2.,
           vec3[-1] + cs3[-1] / 2.)
    chull = odl.IntervalProd(begin, end)
    assert grid.convex_hull() == chull

    # With degenerate axis
    grid = TensorGrid(vec1, vec2, scalar, as_midp=True)
    begin = (vec1[0] - cs1[0] / 2., vec2[0] - cs2[0] / 2., scalar)
    end = (vec1[-1] + cs1[-1] / 2., vec2[-1] + cs2[-1] / 2., scalar)
    chull = odl.IntervalProd(begin, end)
    assert grid.convex_hull() == chull