mesh_face_matrix
- compas.datastructures.mesh_face_matrix(mesh, rtype='array')[source]
Construct the face matrix from a Mesh datastructure.
- Parameters
mesh (compas.datastructures.Mesh) – Instance of mesh.
rtype ({‘array’, ‘csc’, ‘csr’, ‘coo’, ‘list’}) – Format of the result.
- Returns
array-like – Constructed mesh face matrix.
Notes
The face matrix represents the relationship between faces and vertices. Each row of the matrix represents a face. Each column represents a vertex. The matrix is filled with zeros except where a relationship between a vertex and a face exist.
\[\begin{split}F_{ij} = \begin{cases} 1 & \text{if vertex j is part of face i} \\ 0 & \text{otherwise} \end{cases}\end{split}\]The face matrix can for example be used to compute the centroids of all faces of a mesh.
Examples
>>> from compas.datastructures import Mesh >>> mesh = Mesh.from_polyhedron(6) >>> F = mesh_face_matrix(mesh) >>> type(F) <class 'numpy.ndarray'>
>>> F = mesh_face_matrix(mesh, rtype='csr') >>> type(F) <class 'scipy.sparse.csr.csr_matrix'>
>>> from numpy import allclose >>> xyz = asarray(mesh.vertices_attributes('xyz')) >>> F = mesh_face_matrix(mesh, rtype='csr') >>> c1 = F.dot(xyz) / F.sum(axis=1) >>> c2 = [mesh.face_centroid(fkey) for fkey in mesh.faces()] >>> allclose(c1, c2) True