def test_split_and_projection():

    plant_number = 1
    angle = 0
    calibrations = phm_data.calibrations(plant_number=plant_number)
    projection = calibrations["side"].get_projection(angle)

    voxels_position = numpy.array([[0, 0, 0]])
    voxels_size = 64

    for i in range(5):
        res = phm_mvr.get_bounding_box_voxel_projected(voxels_position,
                                                       voxels_size, projection)
        res = numpy.floor(res).astype(int)

        img = numpy.zeros((3000, 3000))
        for x_min, y_min, x_max, y_max in res:
            img[y_min:y_max + 1, x_min:x_max + 1] = 255

        assert 3864 == numpy.count_nonzero(img)

        img = phm_mvr.project_voxel_centers_on_image(voxels_position,
                                                     voxels_size, (3000, 3000),
                                                     projection)
        assert 3864 == numpy.count_nonzero(img)

        voxels = phm_mvr.split_voxels_in_eight(
            phm_mvr.Voxels(voxels_position, voxels_size))
        voxels_position = voxels.position
        voxels_size = voxels.size
def test_split_voxel_centers_in_eight_1():

    voxels = phm_mvr.Voxels(numpy.array([[0.0, 0.0, 0.0]]), 16)
    result_voxels = phm_mvr.split_voxels_in_eight(voxels)

    ref_position = numpy.array([[-4., -4., -4.], [4., -4., -4.],
                                [-4., 4., -4.], [-4., -4., 4.], [4., 4., -4.],
                                [4., -4., 4.], [-4., 4., 4.], [4., 4., 4.]])

    assert numpy.array_equal(ref_position, result_voxels.position)
def test_split_voxel_centers_in_eight_2():
    voxels = phm_mvr.Voxels(numpy.array([]), 16)
    res = phm_mvr.split_voxels_in_eight(voxels)
    assert numpy.array_equal(res.position, numpy.array([]))