Files
UnrealEngine/Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Private/Solvers/MeshLaplacian.cpp
2025-05-18 13:04:45 +08:00

73 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Solvers/MeshLaplacian.h"
FString LaplacianSchemeName(const ELaplacianWeightScheme Scheme)
{
FString LaplacianName;
switch (Scheme)
{
case ELaplacianWeightScheme::ClampedCotangent:
LaplacianName = FString(TEXT("Clamped Cotangent Laplacian"));
break;
case ELaplacianWeightScheme::Cotangent:
LaplacianName = FString(TEXT("Cotangent Laplacian"));
break;
case ELaplacianWeightScheme::Umbrella:
LaplacianName = FString(TEXT("Umbrella Laplacian"));
break;
case ELaplacianWeightScheme::MeanValue:
LaplacianName = FString(TEXT("MeanValue Laplacian"));
break;
case ELaplacianWeightScheme::Uniform:
LaplacianName = FString(TEXT("Uniform Laplacian"));
break;
case ELaplacianWeightScheme::Valence:
LaplacianName = FString(TEXT("Valence Laplacian"));
break;
case ELaplacianWeightScheme::IDTCotanget:
LaplacianName = FString(TEXT("Intrinsic Delaunay Triangulation Contangent Laplacian"));
break;
default:
check(0 && "Unknown Laplacian Weight Scheme Enum");
}
return LaplacianName;
}
bool bIsSymmetricLaplacian(const ELaplacianWeightScheme Scheme)
{
bool bSymmetric = false;
switch (Scheme)
{
case ELaplacianWeightScheme::ClampedCotangent:
bSymmetric = false;
break;
case ELaplacianWeightScheme::Cotangent:
bSymmetric = false;
break;
case ELaplacianWeightScheme::Umbrella:
bSymmetric = false;
break;
case ELaplacianWeightScheme::MeanValue:
bSymmetric = false;
break;
case ELaplacianWeightScheme::Uniform:
bSymmetric = true;
break;
case ELaplacianWeightScheme::Valence:
bSymmetric = true;
break;
case ELaplacianWeightScheme::IDTCotanget:
bSymmetric = false;
break;
default:
check(0);
}
return bSymmetric;
}