public SpatialCollectionAsBinLattice(Point3d min, Point3d max, int binSize, IList <T> items)
        {
            this.spatialObjects = items;
            this.binSize        = binSize;
            double binRadius = binSize / 2;

            if (min.Equals(max))
            {
                this.min = new Point3d(min.X - binRadius, min.Y - binRadius, min.Z - binRadius);
                this.max = new Point3d(max.X + binRadius, max.Y + binRadius, max.Z + binRadius);
            }
            else
            {
                this.min = min;
                this.max = max;
            }
            populateLattice();
        }
 public void updateDatastructure(Point3d min, Point3d max, int minNodeSize, IList <T> spatialObjects)
 {
     this.spatialObjects = spatialObjects;
     this.binSize        = minNodeSize;
     if (min.Equals(max))
     {
         this.min = new Point3d(min.X - 50, min.Y - 50, min.Z - 50);
         this.max = new Point3d(max.X + 50, max.Y + 50, max.Z + 50);
     }
     //else
     //{
     //  this.min = new Point3d(min.X - Math.Abs(max.X - min.X)/2, min.Y - Math.Abs(max.Y - min.Y)/2, min.Z - Math.Abs(max.Z - min.Z)/2);
     //  this.max = new Point3d(max.X + Math.Abs(max.X - min.X)/2, max.Y + Math.Abs(max.Y - min.Y)/2, max.Z + Math.Abs(max.Z - min.Z)/2);
     //}
     this.min = min;
     this.max = max;
     populateLattice();
 }