trimesh_cotangent_laplacian_matrix

compas.datastructures.trimesh_cotangent_laplacian_matrix(mesh, rtype='csr')[source]

Construct the Laplacian of a triangular mesh with cotangent weights.

Parameters:
meshcompas.datastructures.Mesh

Instance of mesh.

Returns:
array_like

The Laplacian matrix with cotangent weights.

Notes

The cotangent laplacian of a vertex \(\mathbf{v}_{i}\) points from the vertex to the projection of the vertex into the 1-ring plane. The cotangent laplacian vectors of a mesh thus provide an approximation of the per-vertex normals.

The \(n \times n\) cotangent Laplacian matrix \(\mathbf{L}\) of a mesh with vertices \(\mathbf{V}\) and edges \(\mathbf{E}\) is defined as follows [1]

\[\begin{split}\mathbf{L}_{ij} = \begin{cases} -1 & \text{if i = j} \\ w_{ij} & \text{if (i, j) \in \mathbf{E}} \\ 0 & \text{otherwise} \end{cases}\end{split}\]

with

\[w_{ij} = \frac{\omega_{ij}}{\sum_{(i, k) \in \mathbf{E}_{i}} \omega_{ik}}\]

References

[1]

Nealen A., Igarashi T., Sorkine O. and Alexa M. Laplacian Mesh Optimization.