Exemple #1
0
    /// <summary>
    /// Splits Voxel into 8 smaller Voxels, returns new Octree Container.
    /// <summary>
    public OctreeContainer <T> split(out MetadataChange change)
    {
        OctreeContainer <T> replacement = new OctreeContainer <T>(min, max, minSize);

        /// add original point to new OctreeContainer
        int childNum  = replacement.whichChild(point);
        var voxBounds = replacement.childBounds(childNum);

        replacement.setChild(childNum, new Voxel <T>(voxBounds["min"], voxBounds["max"], minSize, point, value));

        change = new MetadataChange(dComponents: 8, dVoxels: 7, dNonNullVolume: -0.875 * replacement.volume());
        return(replacement);
    }