diff --git a/include/cinolib/voxel_grid.cpp b/include/cinolib/voxel_grid.cpp index 6bddc9f5..b080d993 100644 --- a/include/cinolib/voxel_grid.cpp +++ b/include/cinolib/voxel_grid.cpp @@ -40,6 +40,29 @@ namespace cinolib { +//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +CINO_INLINE +void voxel_grid_init( VoxelGrid & g, + const uint dim[3], + const AABB & bbox) +{ + assert(g.voxels==nullptr); + + g.dim[0] = dim[0]; + g.dim[1] = dim[1]; + g.dim[2] = dim[2]; + g.bbox = bbox; + + uint max_voxels_per_side = std::max(dim[0],std::max(dim[1],dim[2])); + g.len = g.bbox.delta().max_entry() / max_voxels_per_side; + + uint size = dim[0]*dim[1]*dim[2]; + g.voxels = new int[size](); // https://stackoverflow.com/questions/12553154/initial-value-of-dynamically-allocated-memory-in-c +} + +//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + CINO_INLINE uint voxel_corner_index(const uint dim[3], const uint ijk[3], diff --git a/include/cinolib/voxel_grid.h b/include/cinolib/voxel_grid.h index dff5de1c..4ddae519 100644 --- a/include/cinolib/voxel_grid.h +++ b/include/cinolib/voxel_grid.h @@ -61,10 +61,18 @@ enum VOXEL_OUTSIDE = 0x00000001, VOXEL_INSIDE = 0x00000010, VOXEL_BOUNDARY = 0x00000100, + VOXEL_ANY = 0x11111111, }; //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +CINO_INLINE +void voxel_grid_init( VoxelGrid & g, + const uint dim[3], + const AABB & bbox); + +//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + CINO_INLINE uint voxel_corner_index(const uint dim[3], const uint ijk[3], diff --git a/include/cinolib/voxel_grid_to_hexmesh.cpp b/include/cinolib/voxel_grid_to_hexmesh.cpp index aa492383..ba02eae7 100644 --- a/include/cinolib/voxel_grid_to_hexmesh.cpp +++ b/include/cinolib/voxel_grid_to_hexmesh.cpp @@ -56,8 +56,9 @@ void voxel_grid_to_hexmesh(const VoxelGrid & g, std::vector vert_map(n_verts,-1); // to keep track of already existing vertices for(uint id=0; id verts(8);