MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / generate_2D_box_mesh

Function generate_2D_box_mesh

python/pymesh/meshutils/generate_box_mesh.py:51–98  ·  view source on GitHub ↗
(box_min, box_max, num_samples, keep_symmetry,
        subdiv_order, using_simplex)

Source from the content-addressed store, hash-verified

49 return mesh
50
51def generate_2D_box_mesh(box_min, box_max, num_samples, keep_symmetry,
52 subdiv_order, using_simplex):
53 if isinstance(num_samples, int):
54 num_samples = [num_samples, num_samples]
55 step_size = np.divide((box_max - box_min), num_samples)
56
57 num_vertices = 0
58 vertices = []
59 faces = []
60 quad_indices = []
61 quad_index = 0
62 for i in range(num_samples[0]):
63 for j in range(num_samples[1]):
64 p = np.multiply([i, j], step_size) + box_min
65 corners = np.array([
66 [p[0] , p[1] ],
67 [p[0]+step_size[0], p[1] ],
68 [p[0]+step_size[0], p[1]+step_size[1]],
69 [p[0] , p[1]+step_size[1]] ])
70 subcell_corners = subdivide_quad(corners, subdiv_order)
71 for corners in subcell_corners:
72 if using_simplex:
73 if keep_symmetry:
74 cell_vertices, cell_faces =\
75 split_quad_into_tris_symmetrically(corners)
76 else:
77 cell_vertices, cell_faces =\
78 split_quad_into_tris(corners)
79 else:
80 cell_vertices = corners
81 cell_faces = np.array([[0, 1, 2, 3]])
82 vertices.append(cell_vertices)
83 faces.append(cell_faces + num_vertices)
84 num_vertices += len(cell_vertices)
85 quad_indices.append(np.ones(len(cell_faces)) * quad_index)
86
87 quad_index +=1
88
89 vertices = np.vstack(vertices)
90 faces = np.vstack(faces)
91 quad_indices = np.vstack(quad_indices).ravel(order="C")
92
93 vertices, faces, __ = remove_duplicated_vertices_raw(vertices, faces)
94 vertices, faces, __ = remove_isolated_vertices_raw(vertices, faces)
95
96 tets = np.array([], dtype=int)
97 mesh = form_mesh(vertices, faces, tets)
98 return mesh, quad_indices
99
100def subdivide_quad(corners, subdiv_order):
101 """

Callers 1

generate_box_meshFunction · 0.85

Calls 6

subdivide_quadFunction · 0.85
split_quad_into_trisFunction · 0.85
form_meshFunction · 0.85

Tested by

no test coverage detected