/// <inheritdoc />
        public IEnumerable <IVoxelProjection <TVoxel, TSurfaceData> > GetContourableProjections(
            IContourDeterminer <TVoxel> contourDeterminer)
        {
            IDualContourableContracts.GetContourableProjections(contourDeterminer);

            return(new EnumerableProjectionsIndexable <TVoxel, TSurfaceData>(
                       contourDeterminer, this.voxels, this.start, this.end, this.stageIndexOrigin));
        }
            /// <inheritdoc />
            public IEnumerable <IVoxelProjection <TerrainVoxel, TSurfaceData> > GetContourableProjections(
                IContourDeterminer <TerrainVoxel> contourDeterminer)
            {
                IDualContourableContracts.GetContourableProjections(contourDeterminer);

                return(new EnumerableProjectionsIndexable <TerrainVoxel, TSurfaceData>(
                           contourDeterminer,
                           this.voxels,
                           Index3D.Zero,
                           this.voxelChunkDimensionsInVoxels,
                           this.stageVoxelIndexOfViewOrigin));
            }