コード例 #1
0
        public bool Insert(Circle2D o)
        {
            if (!range.Contains(o.GetCenter()))
            {
                return(false);
            }

            if (data.Count < capacity)
            {
                data.Add(o);
                return(true);
            }

            if (!childs.ContainsKey(QuadTreeDirection.LeftBottom))
            {
                Subdivide(QuadTreeDirection.LeftBottom);
            }

            if (childs[QuadTreeDirection.LeftBottom].Insert(o))
            {
                return(true);
            }

            if (!childs.ContainsKey(QuadTreeDirection.LeftUp))
            {
                Subdivide(QuadTreeDirection.LeftUp);
            }

            if (childs[QuadTreeDirection.LeftUp].Insert(o))
            {
                return(true);
            }

            if (!childs.ContainsKey(QuadTreeDirection.RightUp))
            {
                Subdivide(QuadTreeDirection.RightUp);
            }

            if (childs[QuadTreeDirection.RightUp].Insert(o))
            {
                return(true);
            }

            if (!childs.ContainsKey(QuadTreeDirection.RightBottom))
            {
                Subdivide(QuadTreeDirection.RightBottom);
            }

            if (childs[QuadTreeDirection.RightBottom].Insert(o))
            {
                return(true);
            }

            return(false);
        }