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

Method __init_surface_boundaries

python/pymesh/Boundary.py:14–36  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

12 self.__init_volume_boundaries()
13
14 def __init_surface_boundaries(self):
15 self.__add_attribute("vertex_normal")
16 surface_boundary = \
17 PyMeshUtils.Boundary.extract_surface_boundary(self.__mesh.raw_mesh)
18 boundaries = surface_boundary.get_boundaries()
19 assert(boundaries.shape[1] == 2)
20
21 self.boundary_nodes = surface_boundary.get_boundary_nodes().ravel()
22 self.boundaries = boundaries
23
24 v1 = self.__mesh.vertices_ref[boundaries[:,0]]
25 v2 = self.__mesh.vertices_ref[boundaries[:,1]]
26 self.__boundary_areas = norm(v1 - v2, axis=1)
27 self.__boundary_node_areas = np.zeros(self.__mesh.num_vertices)
28 for i, bd in enumerate(boundaries):
29 self.__boundary_node_areas[bd] += self.__boundary_areas[i]
30 self.__boundary_node_areas /= 2.0
31 self.__boundary_centers = (v1 + v2) / 2.0
32 self.__boundary_normals = np.zeros_like(v1)
33 self.__boundary_normals[:,0] = v1[:,1] - v2[:,1]
34 self.__boundary_normals[:,1] = v2[:,0] - v1[:,0]
35 self.__boundary_normals = np.divide(
36 self.__boundary_normals, self.__boundary_areas[:,np.newaxis])
37
38 def __init_volume_boundaries(self):
39 self.__add_attribute("face_area")

Callers 1

__init__Method · 0.95

Calls 5

__add_attributeMethod · 0.95
enumerateFunction · 0.85
get_boundariesMethod · 0.45
get_boundary_nodesMethod · 0.45

Tested by

no test coverage detected