コード例 #1
0
 public List <UV> FindPointsInRectangle(UVRect rectangle)
 {
     return
         (Root.FindNodesIntersectingRectangle(rectangle)
          .Where(n => n.Point != null)
          .Select(n => n.Point)
          .ToList());
 }
コード例 #2
0
ファイル: Quadtree.cs プロジェクト: ankushraizada/Dynamo
 public List<UV> FindPointsInRectangle(UVRect rectangle)
 {
     return
         Root.FindNodesIntersectingRectangle(rectangle)
             .Where(n => n.Point != null)
             .Select(n => n.Point)
             .ToList();
 }
コード例 #3
0
        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);   
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Quadtree.cs プロジェクト: ankushraizada/Dynamo
 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;
 }
コード例 #6
0
ファイル: Quadtree.cs プロジェクト: ankushraizada/Dynamo
 private bool Intersects(UVRect rect)
 {
     return Bounds.Intersects(rect);
 }
コード例 #7
0
ファイル: Quadtree.cs プロジェクト: ankushraizada/Dynamo
        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;
        }
コード例 #8
0
ファイル: Quadtree.cs プロジェクト: ankushraizada/Dynamo
 public Node(UV min, UV max)
 {
     Bounds = new UVRect(min, max);
 }
コード例 #9
0
 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);
 }
コード例 #10
0
 private bool Intersects(UVRect rect)
 {
     return(Bounds.Intersects(rect));
 }
コード例 #11
0
 public Node(UV min, UV max)
 {
     Bounds = new UVRect(min, max);
 }