Module |
|
Header |
/Engine/Plugins/Experimental/GeometryProcessing/Source/DynamicMesh/Public/Solvers/LaplacianMatrixAssembly.h |
Include |
#include "Solvers/LaplacianMatrixAssembly.h" |
namespace UE
{
namespace MeshDeformation
{
template<typename RealType>
void UE::MeshDeformation::ConstructUmbrellaLaplacian
(
const FDynamicMesh3 & DynamicMesh,
const FVertexLinearization & VertexMap,
UE::Solvers::TSparseMatrixAssembler< RealType > & LaplacianInterior,
UE::Solvers::TSparseMatrixAssembler< RealType > & LaplacianBoundary
)
}
}
Construct a sparse matrix representation of an umbrella weighted Laplacian. This Laplacian is defined solely in terms of the connectivity of the mesh. Note, there is no expectation that the resulting matrix will be symmetric.
The mesh itself is assumed to have N interior vertices, and M boundary vertices.
Row i represents the Laplacian at vert_i, the non-zero entries correspond to the incident one-ring vertices vert_j.
L{ij} = 1 / valence(of i) if vert_j is in the one-ring of vert_i L{ii} = -Sum{ L_{ij}, j != i} = -1
LaplacianInterior * Vector_InteriorVerts + LaplacianBoundary * Vector_BoundaryVerts = Full Laplacian applied to interior vertices.
Parameter |
Description |
---|---|
DynamicMesh |
The triangle mesh |
VertexMap |
Additional arrays used to map between vertexID and offset in a linear array (i.e. the row). The vertices are ordered so that last M ( = VertexMap.NumBoundaryVerts() ) correspond to those on the boundary. |
LaplacianInterior |
On return, the laplacian operator that acts on the interior vertices: sparse N x N matrix |
LaplacianBoundary |
On return, the portion of the operator that acts on the boundary vertices: sparse N x M matrix |