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); } } }
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); } }
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); } } }