def NOtest_num_visits(self): """ Test optimisation code. """ a = [3, 7] b = [5, 7] c = [5, 5] d = [7, 7] e = [15, 15] f = [15, 30] g = [30, 10] h = [30, 30] points = [a, b, c, d, e, f, g, h] #bac, bce, ecf, dbe, daf, dae vertices = [[1,0,2], [1,3,4], [1,2,3], [5,4,7], [4,6,7]] mesh = Mesh(points, vertices) Q = MeshQuadtree(mesh) results = Q.search_fast([5.5, 5.5]) print 'visits: ', Q.count_visits() Q.clear_visits() results = Q.search_fast([30, 10]) print 'visits: ', Q.count_visits() print 'second time:' Q.clear_visits() results = Q.search_fast([5.5, 5.5]) print 'visits: ', Q.count_visits()
def test_bigger(self): """test_bigger test larger mesh """ points, vertices, boundary = rectangular(4, 4, 1, 1) mesh = Mesh(points, vertices, boundary) #Test that points are arranged in a counter clock wise order mesh.check_integrity() root = MeshQuadtree(mesh) root.set_last_triangle() for x in [[0.6, 0.3], [0.1, 0.2], [0.7,0.7], [0.1,0.9], [0.4,0.6], [0.9,0.1], [10, 3]]: found, s0, s1, s2, k = root.search_fast(ensure_numeric(x)) if k >= 0: V = mesh.get_vertex_coordinates(k) # nodes for triangle k assert is_inside_polygon(x, V) assert found is True #print k, x else: assert found is False
def test_large(self): """test_larger mesh and different quad trees """ points, vertices, boundary = rectangular(10, 12, 1, 1) mesh = Mesh(points, vertices, boundary) #Test that points are arranged in a counter clock wise order mesh.check_integrity() root = MeshQuadtree(mesh) root.set_last_triangle() #print m, root.show() for x in [[0.6, 0.3], [0.1, 0.2], [0.7,0.7], [0.1,0.9], [0.4,0.6], [0.9,0.1], [10, 3]]: found, s0, s1, s2, k = root.search_fast(x) if k >= 0: V = mesh.get_vertex_coordinates(k) # nodes for triangle k assert is_inside_triangle(x, V, closed=True) assert is_inside_polygon(x, V) assert found is True else: assert found is False if k == 0: return
def test_off_and_boundary(self): """test_off: Test a point off the mesh """ points, vertices, boundary = rectangular(1, 1, 1, 1) mesh = Mesh(points, vertices, boundary) #Test that points are arranged in a counter clock wise order mesh.check_integrity() root = MeshQuadtree(mesh) root.set_last_triangle() found, s0, s1, s2, k = root.search_fast([-0.2, 10.7]) assert found is False found, s0, s1, s2, k = root.search_fast([0, 0]) assert found is True
def test_small(self): """test_small: Two triangles """ points, vertices, boundary = rectangular(1, 1, 1, 1) mesh = Mesh(points, vertices, boundary) #Test that points are arranged in a counter clock wise order mesh.check_integrity() root = MeshQuadtree(mesh) root.set_last_triangle() x = [0.2, 0.7] found, s0, s1, s2, k = root.search_fast(x) assert k == 1 # Triangle one assert found is True