コード例 #1
0
 private Boolean Contains(RNode <T> node, IBoundingBox <T> area)
 {
     if (!node.BoundingBox.Contains(area))
     {
         return(false);
     }
     else
     {
         if (node.IsLeaf)
         {
             foreach (var item in node.Items)
             {
                 if (area.CompareTo(item) == 0)
                 {
                     return(true);
                 }
             }
             return(false);
         }
         else
         {
             foreach (var child in node.Children)
             {
                 if (child.BoundingBox.Contains(area))
                 {
                     return(this.Contains(child, area));
                 }
             }
             return(false);
         }
     }
 }
コード例 #2
0
 private void Add(RNode <T> currentNode, ShapeItem <T> item)
 {
     if (!currentNode.HasChildren())
     {
         currentNode.Add(item);
     }
     else
     {
         this.Add(this.AddStrategy.GetNode(currentNode.Children, item.BoundingBox), item);
     }
 }
コード例 #3
0
 private void ToString(RNode <T> currentNode, ref String text)
 {
     if (currentNode.IsLeaf)
     {
         text += $"Node {this.Node.BoundingBox.ToString()}{Environment.NewLine}";
         foreach (var item in currentNode.Items)
         {
             text += $"{item.BoundingBox.ToString()}";
         }
         text += Environment.NewLine;
     }
     else
     {
         text += $"Node {this.Node.BoundingBox.ToString()}{Environment.NewLine}";
         foreach (var child in currentNode.Children)
         {
             this.ToString(child, ref text);
         }
     }
 }