public List <UV> FindPointsInRectangle(UVRect rectangle) { return (Root.FindNodesIntersectingRectangle(rectangle) .Where(n => n.Point != null) .Select(n => n.Point) .ToList()); }
public List<UV> FindPointsInRectangle(UVRect rectangle) { return Root.FindNodesIntersectingRectangle(rectangle) .Where(n => n.Point != null) .Select(n => n.Point) .ToList(); }
public void QuadTree_FindPointsInRectangle() { var uvs = new List<UV>(); uvs.Add(UV.ByCoordinates(0.1, 0.1)); uvs.Add(UV.ByCoordinates(0.3, 0.03)); uvs.Add(UV.ByCoordinates(0.7, 0.7)); var qt = Quadtree.ByUVs(uvs); UVRect uvRect = new UVRect(UV.ByCoordinates(0,0),UV.ByCoordinates(0.5,0.5)); var points = qt.FindPointsInRectangle(uvRect); Assert.AreEqual(points.Count, 2); }
public List <Node> FindNodesIntersectingRectangle(UVRect rectangle) { var nodes = new List <Node>(); if (!Intersects(rectangle)) { return(nodes); } if (IsLeafNode) { nodes.Add(this); return(nodes); } nodes.AddRange(NW.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(NE.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(SW.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(SE.FindNodesIntersectingRectangle(rectangle)); return(nodes); }
public bool Intersects(UVRect rect) { return this.Min.U < rect.Max.U && this.Max.U > rect.Min.U && this.Min.V < rect.Max.V && this.Max.V > rect.Min.V; }
private bool Intersects(UVRect rect) { return Bounds.Intersects(rect); }
public List<Node> FindNodesIntersectingRectangle(UVRect rectangle) { var nodes = new List<Node>(); if (!Intersects(rectangle)) return nodes; if (IsLeafNode) { nodes.Add(this); return nodes; } nodes.AddRange(NW.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(NE.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(SW.FindNodesIntersectingRectangle(rectangle)); nodes.AddRange(SE.FindNodesIntersectingRectangle(rectangle)); return nodes; }
public Node(UV min, UV max) { Bounds = new UVRect(min, max); }
public bool Intersects(UVRect rect) { return(this.Min.U < rect.Max.U && this.Max.U > rect.Min.U && this.Min.V < rect.Max.V && this.Max.V > rect.Min.V); }
private bool Intersects(UVRect rect) { return(Bounds.Intersects(rect)); }