Lagrange
Loading...
Searching...
No Matches
PolyDDG Module

Polygonal Discrete Differential Geometry (PolyDDG) algorithms and data structures. More...

Classes

struct  PrincipalCurvaturesOptions
 Options for compute_principal_curvatures(). More...
 
struct  PrincipalCurvaturesResult
 Result of compute_principal_curvatures(). More...
 
class  DifferentialOperators< Scalar, Index >
 Polygonal mesh discrete differential operators. More...
 

Functions

template<typename Scalar, typename Index>
LA_POLYDDG_API PrincipalCurvaturesResult compute_principal_curvatures (SurfaceMesh< Scalar, Index > &mesh, const DifferentialOperators< Scalar, Index > &ops, PrincipalCurvaturesOptions options={})
 Compute per-vertex principal curvatures and principal curvature directions.
 
template<typename Scalar, typename Index>
LA_POLYDDG_API PrincipalCurvaturesResult compute_principal_curvatures (SurfaceMesh< Scalar, Index > &mesh, PrincipalCurvaturesOptions options={})
 Compute per-vertex principal curvatures and principal curvature directions.
 

Detailed Description

Polygonal Discrete Differential Geometry (PolyDDG) algorithms and data structures.

This module is based on the paper "Discrete Differential Operators on Polygonal Meshes" by de Goes et al. [1]. It provides common discrete differential operators to manipulate differential forms and vector fields on polygonal meshes.

[1] De Goes, Fernando, Andrew Butts, and Mathieu Desbrun. "Discrete differential operators on polygonal meshes." ACM Transactions on Graphics (TOG) 39.4 (2020): 110-1.

Function Documentation

◆ compute_principal_curvatures() [1/2]

template<typename Scalar, typename Index>
LA_POLYDDG_API PrincipalCurvaturesResult compute_principal_curvatures ( SurfaceMesh< Scalar, Index > & mesh,
const DifferentialOperators< Scalar, Index > & ops,
PrincipalCurvaturesOptions options = {} )

#include <lagrange/polyddg/compute_principal_curvatures.h>

Compute per-vertex principal curvatures and principal curvature directions.

Performs an eigendecomposition of the adjoint shape operator at each vertex. The two eigenvalues are the principal curvatures (kappa_min <= kappa_max) and the corresponding eigenvectors, mapped back to 3-D through the vertex tangent basis, are the principal directions. Results are stored as vertex attributes in the mesh.

Parameters
[in,out]meshInput surface mesh. Output attributes are added or overwritten.
[in]opsPrecomputed differential operators for the mesh.
[in]optionsAttribute name options. Defaults produce attributes named @kappa_min, @kappa_max, @principal_direction_min, @principal_direction_max.
Returns
Attribute IDs of the four output attributes.

◆ compute_principal_curvatures() [2/2]

template<typename Scalar, typename Index>
LA_POLYDDG_API PrincipalCurvaturesResult compute_principal_curvatures ( SurfaceMesh< Scalar, Index > & mesh,
PrincipalCurvaturesOptions options = {} )

#include <lagrange/polyddg/compute_principal_curvatures.h>

Compute per-vertex principal curvatures and principal curvature directions.

Convenience overload that constructs a DifferentialOperators object internally.

Parameters
[in,out]meshInput surface mesh. Output attributes are added or overwritten.
[in]optionsAttribute name options.
Returns
Attribute IDs of the four output attributes.