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

Method init_boundary_normals

tools/Assembler/Mesh/TriangleMesh.cpp:267–288  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

265}
266
267void TriangleMesh::init_boundary_normals(const BoundaryPtr& bd) {
268 const size_t dim = m_mesh->get_dim();
269 const size_t num_edges = m_boundary_edges.rows();
270 m_boundary_normals.resize(num_edges, 3);
271 for (size_t i=0; i<num_edges; i++) {
272 const VectorI& edge = m_boundary_edges.row(i);
273 assert(2 == edge.size());
274 VectorF v0 = m_mesh->get_vertex(edge[0]);
275 VectorF v1 = m_mesh->get_vertex(edge[1]);
276
277 size_t face_idx = bd->get_boundary_element(i);
278 VectorF normal = m_mesh->get_attribute("face_normal").segment(
279 face_idx * 3, 3);
280
281 Vector3F edge_v, normal_v;
282 edge_v.segment(0, dim) = v1 - v0;
283 normal_v.segment(0, 3) = normal;
284
285 Vector3F edge_normal = edge_v.cross(normal_v).normalized();
286 m_boundary_normals.row(i) = edge_normal;
287 }
288}
289
290void TriangleMesh::init_boundary_vertex_normals() {
291 const size_t dim = getDim();

Callers

nothing calls this directly

Calls 5

get_dimMethod · 0.45
sizeMethod · 0.45
get_vertexMethod · 0.45
get_boundary_elementMethod · 0.45
get_attributeMethod · 0.45

Tested by

no test coverage detected