Euclid
Geometry Processing and Shape Analysis in C++
Spectral

Spectral decomposition of a 3D shape. More...

Enumerations

enum  Euclid::SpecOp { Euclid::SpecOp::laplace_beltrami, Euclid::SpecOp::graph_laplacian }
 The operator to use for spectral decomposition. More...
 
enum  Euclid::SpecDecomp { Euclid::SpecDecomp::symmetric, Euclid::SpecDecomp::generalized }
 The method to use for spectral decomposition. More...
 

Functions

template<typename Mesh , typename DerivedA , typename DerivedB >
unsigned Euclid::spectrum (const Mesh &mesh, unsigned k, Eigen::MatrixBase< DerivedA > &lambdas, Eigen::MatrixBase< DerivedB > &phis, SpecOp op=SpecOp::laplace_beltrami, SpecDecomp decomp=SpecDecomp::symmetric, unsigned max_iter=1000, double tolerance=1e-10)
 Spectral decomposition of a mesh. More...
 

Detailed Description

This package contains several methods to conduct spectral decomposition of a given shape by computing the eigenvalues and eigenvectors of the Laplacian matrix. It provides the basis for various spectral shape processing algorithms.

References

[1] Zhang, H., Van Kaick, O., Dyer, R. Spectral Mesh Processing. Computer Graphics Forum, 2010.

[2] Vallet, B., Levy, B. Spectral Geometry Processing with Manifold Harmonics. Computer Graphics Forum, 2008.

Enumeration Type Documentation

enum Euclid::SpecDecomp
strong
Enumerator
symmetric 

Solving the symmetric Laplacian matrix.

Let \(L=D^{-1/2}SD^{-1/2}\), then solving the eigenvalue problem of this symmetric matrix \(LX=\lambda X\).

generalized 

Solving the generalized eigenvalue problem.

Let \(L=D^{-1}S\), then solving the generalized eigenvalue problem \(SX=\lambda DX\).

enum Euclid::SpecOp
strong
Enumerator
laplace_beltrami 

The Laplace-Beltrami operator.

graph_laplacian 

The graph Laplacian operator.

Function Documentation

template<typename Mesh , typename DerivedA , typename DerivedB >
unsigned Euclid::spectrum ( const Mesh &  mesh,
unsigned  k,
Eigen::MatrixBase< DerivedA > &  lambdas,
Eigen::MatrixBase< DerivedB > &  phis,
SpecOp  op = SpecOp::laplace_beltrami,
SpecDecomp  decomp = SpecDecomp::symmetric,
unsigned  max_iter = 1000,
double  tolerance = 1e-10 
)
Parameters
meshThe input mesh.
kThe number of eigenvalues to compute. Note that the actual size of the spectrum might be smaller than k when the computation doesn't converge.
lambdasThe output eigenvalues, sorted in ascending order.
phisThe output eigenfunctions corresponding to the eigenvalues.
opThe Laplace operator to use.
decompThe eigen system to solve.
max_iterThe maximum number of iterations for eigen decomposition.
toleranceThe tolerance of accuracy loss in eigen decomposition.
Returns
The number of converged eigenvalues.
See also
SpecOp
SpecDecomp