Inheritance: MonoBehaviour
Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var bounds = new CubeBounds(Vector.Zero, 2);
            var octree = new Octree <string>(bounds);

            //for (int i = 0; i < 100; i++)
            //{
            //    octree.AddValue(Vector.Random(), "beer");
            //}

            //octree.PrintTree();

            var point = Vector.Zero;
            OctreeNode <string> node = new OctreeNode <string>(bounds, 0);

            node.Split();

            foreach (var child in node.Children)
            {
                Console.Write(child.Index + " ");
                Console.WriteLine(child.Bounds.Contains(point));
            }

            Console.WriteLine(node.GetChildContainingPoint(point).Index);

            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public void NotContainsPoints()
        {
            var bounds = new CubeBounds(new Vector(0, 0, 0), 2);
            var octree = new Octree <string>(bounds);

            Assert.IsFalse(octree.Contains(new Vector(0, 0, 2)));
            Assert.IsFalse(octree.Contains(new Vector(0, 0, -2)));
            Assert.IsFalse(octree.Contains(new Vector(0, 2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(0, 2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(0, 2, -2)));
            Assert.IsFalse(octree.Contains(new Vector(0, -2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(0, -2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(0, -2, -2)));
            Assert.IsFalse(octree.Contains(new Vector(2, 0, 0)));
            Assert.IsFalse(octree.Contains(new Vector(2, 0, 2)));
            Assert.IsFalse(octree.Contains(new Vector(2, 0, -2)));
            Assert.IsFalse(octree.Contains(new Vector(2, 2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(2, 2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(2, 2, -2)));
            Assert.IsFalse(octree.Contains(new Vector(2, -2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(2, -2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(2, -2, -2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 0, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 0, 2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 0, -2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, 2, -2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, -2, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-2, -2, 2)));
            Assert.IsFalse(octree.Contains(new Vector(-2, -2, -2)));
        }
Ejemplo n.º 3
0
        public void Intersection()
        {
            var bounds = new CubeBounds(Vector.Zero, 2);
            var octree = new Octree <string>(bounds);

            Assert.IsTrue(bounds.Intersects(new CubeBounds(Vector.Zero, 2)));
            Assert.IsTrue(bounds.Intersects(new CubeBounds(Vector.One, 1)));
            Assert.IsTrue(bounds.Intersects(new CubeBounds(new Vector(2, 2, 2), 2)));
        }
Ejemplo n.º 4
0
        public void NewOctree()
        {
            var bounds = new CubeBounds(new Vector(0, 0, 0), 2);
            var octree = new Octree <string>(bounds);

            Assert.AreEqual <Vector>(new Vector(0, 0, 0), octree.Bounds.Origin);
            Assert.AreEqual <float>(2, octree.Bounds.Size);
            Assert.IsTrue(octree.Contains(Vector.Zero));
        }
Ejemplo n.º 5
0
 private PyriteCube CreateCubeFromCubeBounds(CubeBounds cubeBounds)
 {
     return(new PyriteCube
     {
         X = (int)cubeBounds.BoundingBox.Min.x,
         Y = (int)cubeBounds.BoundingBox.Min.y,
         Z = (int)cubeBounds.BoundingBox.Min.z
     });
 }
Ejemplo n.º 6
0
 private PyriteCube CreateCubeFromCubeBounds(CubeBounds cubeBounds)
 {
     return new PyriteCube
     {
         X = (int)cubeBounds.BoundingBox.Min.x,
         Y = (int)cubeBounds.BoundingBox.Min.y,
         Z = (int)cubeBounds.BoundingBox.Min.z
     };
 }
Ejemplo n.º 7
0
        public void ContainsValues()
        {
            var bounds = new CubeBounds(new Vector(0, 0, 0), 2);
            var octree = new Octree <string>(bounds);

            octree.AddValue(Vector.Zero, "fee");
            octree.AddValue(Vector.One, "fi");

            Assert.IsNotNull(octree.Contains("fee"));
            Assert.IsNotNull(octree.Contains("fi"));
        }
Ejemplo n.º 8
0
        public void CountValues()
        {
            var bounds = new CubeBounds(new Vector(0, 0, 0), 2);
            var octree = new Octree <string>(bounds);

            for (int i = 0; i < 100; i++)
            {
                octree.AddValue(Vector.Random(), "beer");
            }

            Assert.AreEqual(100, octree.CountValues());
        }
Ejemplo n.º 9
0
        public void ContainsPoints()
        {
            var bounds = new CubeBounds(new Vector(0, 0, 0), 2);
            var octree = new Octree <string>(bounds);

            // positive sides have inclusive borders
            Assert.IsTrue(octree.Contains(new Vector(0, 0, 0)));
            Assert.IsTrue(octree.Contains(new Vector(0, 0, 1)));
            Assert.IsTrue(octree.Contains(new Vector(0, 1, 0)));
            Assert.IsTrue(octree.Contains(new Vector(0, 1, 1)));
            Assert.IsTrue(octree.Contains(new Vector(1, 0, 0)));
            Assert.IsTrue(octree.Contains(new Vector(1, 0, 1)));
            Assert.IsTrue(octree.Contains(new Vector(1, 1, 0)));
            Assert.IsTrue(octree.Contains(new Vector(1, 1, 1)));

            // negative sides have exclusive borders
            Assert.IsFalse(octree.Contains(new Vector(-1, 0, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-1, 0, 1)));
            Assert.IsFalse(octree.Contains(new Vector(-1, 1, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-1, 1, 1)));
            Assert.IsFalse(octree.Contains(new Vector(0, 0, -1)));
            Assert.IsFalse(octree.Contains(new Vector(0, 1, -1)));
            Assert.IsFalse(octree.Contains(new Vector(0, -1, 0)));
            Assert.IsFalse(octree.Contains(new Vector(0, -1, 1)));
            Assert.IsFalse(octree.Contains(new Vector(0, -1, -1)));
            Assert.IsFalse(octree.Contains(new Vector(1, 0, -1)));
            Assert.IsFalse(octree.Contains(new Vector(1, 1, -1)));
            Assert.IsFalse(octree.Contains(new Vector(1, -1, 0)));
            Assert.IsFalse(octree.Contains(new Vector(1, -1, 1)));
            Assert.IsFalse(octree.Contains(new Vector(1, -1, -1)));
            Assert.IsFalse(octree.Contains(new Vector(-1, 0, -1)));
            Assert.IsFalse(octree.Contains(new Vector(-1, 1, -1)));
            Assert.IsFalse(octree.Contains(new Vector(-1, -1, 0)));
            Assert.IsFalse(octree.Contains(new Vector(-1, -1, 1)));
            Assert.IsFalse(octree.Contains(new Vector(-1, -1, -1)));
        }
Ejemplo n.º 10
0
 public GetValuesInBounds(CubeBounds bounds)
 {
     this.bounds = bounds;
 }
Ejemplo n.º 11
0
 public bool Intersects(CubeBounds bounds)
 {
     return(this.Bounds.Intersects(bounds));
 }
Ejemplo n.º 12
0
 public List <T> GetValues(CubeBounds bounds)
 {
     return(null);
 }
Ejemplo n.º 13
0
 // constructors
 public Octree(CubeBounds bounds)
 {
     this.Bounds           = bounds;
     this.root             = new OctreeNode <T>(bounds, 0);
     this.MaxValuesPerNode = 8;
 }
Ejemplo n.º 14
0
 // constructors
 public OctreeNode(CubeBounds bounds, int index, OctreeNode <T> parent = null)
 {
     this.Bounds = bounds;
     this.Index  = index;
     this.parent = parent;
 }