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