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(); }
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))); }
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))); }
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)); }
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 }); }
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 }; }
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")); }
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()); }
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))); }
public GetValuesInBounds(CubeBounds bounds) { this.bounds = bounds; }
public bool Intersects(CubeBounds bounds) { return(this.Bounds.Intersects(bounds)); }
public List <T> GetValues(CubeBounds bounds) { return(null); }
// constructors public Octree(CubeBounds bounds) { this.Bounds = bounds; this.root = new OctreeNode <T>(bounds, 0); this.MaxValuesPerNode = 8; }
// constructors public OctreeNode(CubeBounds bounds, int index, OctreeNode <T> parent = null) { this.Bounds = bounds; this.Index = index; this.parent = parent; }