Source code for openalea.phenomenal.object.voxelSkeleton

# -*- python -*-
#
#       Copyright INRIA - CIRAD - INRA
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
# ==============================================================================
from __future__ import division, print_function, absolute_import

import numpy

from .voxelGrid import VoxelGrid
# ==============================================================================


[docs]class VoxelSkeleton(object):
[docs] def __init__(self, segments, voxels_size): self.segments = segments self.voxels_size = voxels_size
def voxels_position(self): voxels_position = set() for segment in self.segments: voxels_position = voxels_position.union( segment.voxels_position) return numpy.array(list(voxels_position)) def voxels_position_polyline(self): voxels_position = set() for segment in self.segments: voxels_position = voxels_position.union(segment.polyline) return numpy.array(list(voxels_position)) def volume(self): return len(self.voxels_position()) * self.voxels_size ** 3 def to_voxel_grid(self): return VoxelGrid(self.voxels_position(), self.voxels_size)