public void SearchHilbertTest5() { var n = GraphExtensions.DefaultHilbertSteps; // build graph. var graph = new Graph<Edge>(); var vertex1 = graph.AddVertex(-90, -180); var vertex2 = graph.AddVertex(-90, -60); var vertex3 = graph.AddVertex(-30, -60); var vertex4 = graph.AddVertex(-30, -180); var vertex5 = graph.AddVertex(30, -180); var vertex6 = graph.AddVertex(90, -180); var vertex7 = graph.AddVertex(90, -60); var vertex8 = graph.AddVertex(30, -60); var vertex9 = graph.AddVertex(30, 60); var vertex10 = graph.AddVertex(90, 60); var vertex11 = graph.AddVertex(90, 180); var vertex12 = graph.AddVertex(30, 180); var vertex13 = graph.AddVertex(-30, 180); var vertex14 = graph.AddVertex(-30, 60); var vertex15 = graph.AddVertex(-90, 60); var vertex16 = graph.AddVertex(-90, 180); // search. var found = graph.SearchHilbert(30, 60, 0.001f); Assert.IsNotNull(found); Assert.AreEqual(1, found.Count); Assert.AreEqual(vertex9, found[0]); found = graph.SearchHilbert(30, -180, 0.001f); Assert.IsNotNull(found); Assert.AreEqual(1, found.Count); Assert.AreEqual(vertex5, found[0]); found = graph.SearchHilbert(30, 180, 0.001f); Assert.IsNotNull(found); Assert.AreEqual(1, found.Count); Assert.AreEqual(vertex12, found[0]); found = graph.SearchHilbert(-30, -60, 0.001f); Assert.IsNotNull(found); Assert.AreEqual(1, found.Count); Assert.AreEqual(vertex3, found[0]); // build graph. graph = new Graph<Edge>(); vertex1 = graph.AddVertex(0, 0); vertex2 = graph.AddVertex(0.00001f, 0.00001f); vertex3 = graph.AddVertex(0.00002f, 0.00002f); vertex4 = graph.AddVertex(0.00003f, 0.00003f); vertex5 = graph.AddVertex(0.00004f, 0.00004f); vertex6 = graph.AddVertex(0.00005f, 0.00005f); // build a sorted version. graph.SortHilbert(n); found = graph.SearchHilbert(0, 0, 0.001f); Assert.IsNotNull(found); Assert.AreEqual(6, found.Count); }
public void SearchHilbertTest4() { var n = GraphExtensions.DefaultHilbertSteps; // build graph. var graph = new Graph<Edge>(); var vertex1 = graph.AddVertex(-90, -180); var vertex2 = graph.AddVertex(-90, -60); var vertex3 = graph.AddVertex(-30, -60); var vertex4 = graph.AddVertex(-30, -180); var vertex5 = graph.AddVertex(30, -180); var vertex6 = graph.AddVertex(90, -180); var vertex7 = graph.AddVertex(90, -60); var vertex8 = graph.AddVertex(30, -60); var vertex9 = graph.AddVertex(30, 60); var vertex10 = graph.AddVertex(90, 60); var vertex11 = graph.AddVertex(90, 180); var vertex12 = graph.AddVertex(30, 180); var vertex13 = graph.AddVertex(-30, 180); var vertex14 = graph.AddVertex(-30, 60); var vertex15 = graph.AddVertex(-90, 60); var vertex16 = graph.AddVertex(-90, 180); // search vertex. uint vertex; int count; Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-90, -180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex1, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-90, -60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex2, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-30, -60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex3, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-30, -180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex4, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(30, -180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex5, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(90, -180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex6, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(90, -60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex7, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(30, -60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex8, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(30, 60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex9, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(90, 60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex10, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(90, 180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex11, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(30, 180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex12, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-30, 180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex13, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-30, 60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex14, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-90, 60, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex15, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-90, 180, n), n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex16, vertex); Assert.AreEqual(1, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(30, 60, n) + 1, n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex9, vertex); Assert.AreEqual(0, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(90, -180, n) + 1, n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex6, vertex); Assert.AreEqual(0, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(-30, 60, n) + 1, n, 1, 16, out vertex, out count)); Assert.AreEqual(vertex14, vertex); Assert.AreEqual(0, count); // build graph. graph = new Graph<Edge>(); vertex1 = graph.AddVertex(0, 0); vertex2 = graph.AddVertex(0.00001f, 0.00001f); vertex3 = graph.AddVertex(0.00002f, 0.00002f); vertex4 = graph.AddVertex(0.00003f, 0.00003f); vertex5 = graph.AddVertex(0.00004f, 0.00004f); vertex6 = graph.AddVertex(0.00005f, 0.00005f); // build a sorted version. graph.SortHilbert(n); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(0, 0, n), n, vertex1, vertex6, out vertex, out count)); Assert.AreEqual(vertex1, vertex); Assert.AreEqual(6, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(0, 0, n), n, vertex3, vertex6, out vertex, out count)); Assert.AreEqual(vertex1, vertex); Assert.AreEqual(6, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(0, 0, n), n, vertex1, vertex3, out vertex, out count)); Assert.AreEqual(vertex1, vertex); Assert.AreEqual(6, count); Assert.IsTrue(graph.SearchHilbert(HilbertCurve.HilbertDistance(0, 0, n), n, vertex3, vertex3, out vertex, out count)); Assert.AreEqual(vertex1, vertex); Assert.AreEqual(6, count); }