From 6b9b9fb6b8dbbcae168b70cca7e738195702bb88 Mon Sep 17 00:00:00 2001 From: Michael Will Date: Mon, 27 Nov 2023 16:11:11 +0100 Subject: [PATCH] Changed criticalType computation based on treetype --- core/base/exTreeM/ExTreeM.h | 9 +++++-- core/vtk/ttkMergeTree/ttkMergeTree.cpp | 36 +++++++++++++------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/core/base/exTreeM/ExTreeM.h b/core/base/exTreeM/ExTreeM.h index 6d914448c0..e67fe4f175 100644 --- a/core/base/exTreeM/ExTreeM.h +++ b/core/base/exTreeM/ExTreeM.h @@ -1400,7 +1400,8 @@ namespace ttk { ttk::SimplexId *descendingManifold, ttk::SimplexId *tempArray, const ttk::SimplexId *order, - const triangulationType *triangulation) { + const triangulationType *triangulation, + const char type) { // start global timer ttk::Timer globalTimer; @@ -1423,7 +1424,11 @@ namespace ttk { // flatten the criticalpoints for the segmentation for(int i = 0; i < 4; i++) { for(ttk::SimplexId point : criticalPoints[i]) { - cpMap[point] = 3 - i; + if(type == 0) { + cpMap[point] = 3 - i; + } else { + cpMap[point] = i; + } } } diff --git a/core/vtk/ttkMergeTree/ttkMergeTree.cpp b/core/vtk/ttkMergeTree/ttkMergeTree.cpp index bb7d828b0b..7f4f476da7 100644 --- a/core/vtk/ttkMergeTree/ttkMergeTree.cpp +++ b/core/vtk/ttkMergeTree/ttkMergeTree.cpp @@ -161,7 +161,6 @@ int ttkMergeTree::RequestData(vtkInformation *ttkNotUsed(request), && (!(params_.treeType == ttk::ftm::TreeType::Contour)) && (input->IsA("vtkImageData"))) { printMsg("Triggering ExTreeM Backend."); - // TODO: add CriticalType PointData Array and change isLeaf to RegionType const size_t nVertices = input->GetNumberOfPoints(); // Get triangulation of the input object @@ -269,14 +268,15 @@ int ttkMergeTree::RequestData(vtkInformation *ttkNotUsed(request), for(size_t i = 0; i < nVertices; i++) { orderArrayData[i] = nVertices - orderArrayData[i] - 1; } - ttkTypeMacroT(triangulation->getType(), - (status = exTreeMTree.computePairs( - persistencePairsJoin, cpMap, mergeTreeJoin, - ttkUtils::GetPointer(segmentationId), - ttkUtils::GetPointer(regionType), - ttkUtils::GetPointer(ascendingManifold), - ttkUtils::GetPointer(descendingManifold), - orderArrayData, (T0 *)triangulation->getData()))); + ttkTypeMacroT( + triangulation->getType(), + (status = exTreeMTree.computePairs( + persistencePairsJoin, cpMap, mergeTreeJoin, + ttkUtils::GetPointer(segmentationId), + ttkUtils::GetPointer(regionType), + ttkUtils::GetPointer(ascendingManifold), + ttkUtils::GetPointer(descendingManifold), + orderArrayData, (T0 *)triangulation->getData(), params_.treeType))); // swap the data back (even if the execution failed) #ifdef TTK_ENABLE_OPENMP #pragma omp parallel for num_threads(this->threadNumber_) @@ -306,18 +306,18 @@ int ttkMergeTree::RequestData(vtkInformation *ttkNotUsed(request), int status = 0; - ttkTypeMacroT(triangulation->getType(), - (status = exTreeMTree.computePairs( - persistencePairsSplit, cpMap, mergeTreeSplit, - ttkUtils::GetPointer(segmentationId), - ttkUtils::GetPointer(regionType), - ttkUtils::GetPointer(descendingManifold), - ttkUtils::GetPointer(ascendingManifold), - orderArrayData, (T0 *)triangulation->getData()))); + ttkTypeMacroT( + triangulation->getType(), + (status = exTreeMTree.computePairs( + persistencePairsSplit, cpMap, mergeTreeSplit, + ttkUtils::GetPointer(segmentationId), + ttkUtils::GetPointer(regionType), + ttkUtils::GetPointer(descendingManifold), + ttkUtils::GetPointer(ascendingManifold), + orderArrayData, (T0 *)triangulation->getData(), params_.treeType))); if(status != 1) return 0; - auto outputPoints = vtkUnstructuredGrid::GetData(outputVector, 0); auto outputMergeTreeSplit = vtkUnstructuredGrid::GetData(outputVector, 1);