From 0fa94863637e87a0495f6bca9825b309e6c25227 Mon Sep 17 00:00:00 2001 From: djairoh Date: Sun, 26 May 2024 17:21:15 +0200 Subject: [PATCH] lCol same func as lGlyph --- particle-track-and-trace/src/CMakeLists.txt | 2 ++ .../src/QT/MainWindow.cpp | 12 ++++--- .../src/commands/SpawnPointCallback.cpp | 7 +---- .../src/commands/SpawnPointCallback.h | 3 -- .../src/layers/LColLayer.cpp | 31 ++++++++++--------- .../src/layers/LColLayer.h | 1 + .../src/layers/LGlyphLayer.cpp | 1 - 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/particle-track-and-trace/src/CMakeLists.txt b/particle-track-and-trace/src/CMakeLists.txt index bb885c4..d024cdc 100644 --- a/particle-track-and-trace/src/CMakeLists.txt +++ b/particle-track-and-trace/src/CMakeLists.txt @@ -54,6 +54,8 @@ add_executable(ParticleTrackTrace MACOSX_BUNDLE main.cpp layers/Layer.h layers/LGlyphLayer.cpp layers/LGlyphLayer.h + layers/LColLayer.cpp + layers/LColLayer.h layers/Technique.cpp layers/Technique.h layers/enums.h diff --git a/particle-track-and-trace/src/QT/MainWindow.cpp b/particle-track-and-trace/src/QT/MainWindow.cpp index 877fe3e..ca10de5 100644 --- a/particle-track-and-trace/src/QT/MainWindow.cpp +++ b/particle-track-and-trace/src/QT/MainWindow.cpp @@ -11,6 +11,7 @@ #include "../layers/EColLayer.h" #include "../layers/EGlyphLayer.h" #include "../layers/LGlyphLayer.h" +#include "../layers/LColLayer.h" #include "../Program.h" #include "../advection/UVGrid.h" #include "../advection/kernel/RK4AdvectionKernel.h" @@ -55,11 +56,16 @@ void MainWindow::setupTechniques() { auto kernelRK4 = make_unique(uvGrid); auto kernelRK4BoundaryChecked = make_unique(std::move(kernelRK4), uvGrid); auto lGlyph = new LGlyphLayer(uvGrid, std::move(kernelRK4BoundaryChecked)); + + auto kernelRK4_2 = make_unique(uvGrid); + auto kernelRK4BoundaryChecked_2 = make_unique(std::move(kernelRK4_2), uvGrid); + auto lCol = new LColLayer(uvGrid, std::move(kernelRK4BoundaryChecked_2)); lGlyph->setDt(3600); + lCol->setDt(3600); technique1->addLayer(lGlyph); - // technique2->addLayer(new LColLayer(uvGrid)); // TODO: add LColLayer - technique2->addLayer(lGlyph); + technique2->addLayer(lCol); + // technique2->addLayer(lGlyph); program->addTechnique(technique1); program->addTechnique(technique2); @@ -69,8 +75,6 @@ void MainWindow::setupTechniques() { // TODO: implement feature to call this function on widget // l->spoofPoints(); // l->cycleGlyphStyle(); - - } diff --git a/particle-track-and-trace/src/commands/SpawnPointCallback.cpp b/particle-track-and-trace/src/commands/SpawnPointCallback.cpp index 7cb84ea..f29cb82 100644 --- a/particle-track-and-trace/src/commands/SpawnPointCallback.cpp +++ b/particle-track-and-trace/src/commands/SpawnPointCallback.cpp @@ -51,8 +51,7 @@ void SpawnPointCallback::Execute(vtkObject *caller, unsigned long evId, void *ca } -SpawnPointCallback::SpawnPointCallback() : data(nullptr), - points(nullptr), +SpawnPointCallback::SpawnPointCallback() : points(nullptr), inverseCartographicProjection(nullptr), uvGrid(nullptr) { } @@ -60,10 +59,6 @@ SpawnPointCallback *SpawnPointCallback::New() { return new SpawnPointCallback; } -void SpawnPointCallback::setData(const vtkSmartPointer &data) { - this->data = data; -} - void SpawnPointCallback::setPoints(const vtkSmartPointer &points) { this->points = points; } diff --git a/particle-track-and-trace/src/commands/SpawnPointCallback.h b/particle-track-and-trace/src/commands/SpawnPointCallback.h index 7e9f3e5..083c82d 100644 --- a/particle-track-and-trace/src/commands/SpawnPointCallback.h +++ b/particle-track-and-trace/src/commands/SpawnPointCallback.h @@ -19,8 +19,6 @@ public: void setPoints(const vtkSmartPointer &points); - void setData(const vtkSmartPointer &data); - void setRen(const vtkSmartPointer &ren); void setBeached(const vtkSmartPointer &parts); @@ -30,7 +28,6 @@ public: void setUVGrid(const std::shared_ptr &uvGrid); private: - vtkSmartPointer data; vtkSmartPointer points; vtkSmartPointer ren; vtkSmartPointer particlesBeached; diff --git a/particle-track-and-trace/src/layers/LColLayer.cpp b/particle-track-and-trace/src/layers/LColLayer.cpp index f3d2eb5..a2e3361 100644 --- a/particle-track-and-trace/src/layers/LColLayer.cpp +++ b/particle-track-and-trace/src/layers/LColLayer.cpp @@ -1,4 +1,4 @@ -#include "LGlyphLayer.h" +#include "LColLayer.h" #include "../commands/SpawnPointCallback.h" #include #include @@ -20,9 +20,8 @@ #include "../CartographicTransformation.h" -vtkSmartPointer LGlyphLayer::createSpawnPointCallback() { - auto newPointCallBack = vtkSmartPointer::New(); - newPointCallBack->setData(this->data); +vtkSmartPointer LColLayer::createSpawnPointCallback() { + vtkNew newPointCallBack; newPointCallBack->setPoints(this->points); newPointCallBack->setRen(this->ren); newPointCallBack->setUVGrid(this->uvGrid); @@ -57,7 +56,7 @@ vtkSmartPointer buildLut(int n) { return lut; } -LGlyphLayer::LGlyphLayer(std::shared_ptr uvGrid, std::unique_ptr advectionKernel) { +LColLayer::LColLayer(std::shared_ptr uvGrid, std::unique_ptr advectionKernel) { this->ren = vtkSmartPointer::New(); this->ren->SetLayer(2); @@ -105,9 +104,10 @@ LGlyphLayer::LGlyphLayer(std::shared_ptr uvGrid, std::unique_ptrSetMapper(mapper); this->ren->AddActor(actor); + this->callback = createSpawnPointCallback(); } -void LGlyphLayer::spoofPoints() { +void LColLayer::spoofPoints() { for (int i=0; i < 330; i+=5) { for (int j=0; j < 330; j+=5) { this->points->InsertNextPoint(-15.875+(12.875+15.875)/330*j, 46.125+(62.625-46.125)/330*i, 0); @@ -118,7 +118,7 @@ void LGlyphLayer::spoofPoints() { this->points->Modified(); } -void LGlyphLayer::updateData(int t) { +void LColLayer::updateData(int t) { const int SUPERSAMPLINGRATE = 4; double point[3], oldX, oldY; bool modifiedData = false; @@ -166,18 +166,19 @@ void LGlyphLayer::updateData(int t) { } } -void LGlyphLayer::addObservers(vtkSmartPointer interactor) { - auto newPointCallBack = createSpawnPointCallback(); - interactor->AddObserver(vtkCommand::LeftButtonPressEvent, newPointCallBack); - interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, newPointCallBack); - interactor->AddObserver(vtkCommand::MouseMoveEvent, newPointCallBack); +void LColLayer::addObservers(vtkSmartPointer interactor) { + interactor->AddObserver(vtkCommand::LeftButtonPressEvent, this->callback); + interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, this->callback); + interactor->AddObserver(vtkCommand::MouseMoveEvent, this->callback); } -void LGlyphLayer::removeObservers(vtkSmartPointer interactor) { - // todo: logic for these +void LColLayer::removeObservers(vtkSmartPointer interactor) { + interactor->RemoveObserver(this->callback); + interactor->RemoveObserver(this->callback); + interactor->RemoveObserver(this->callback); } -void LGlyphLayer::setDt(int dt) { +void LColLayer::setDt(int dt) { this->dt = dt; } diff --git a/particle-track-and-trace/src/layers/LColLayer.h b/particle-track-and-trace/src/layers/LColLayer.h index 0ae5a4c..592dd04 100644 --- a/particle-track-and-trace/src/layers/LColLayer.h +++ b/particle-track-and-trace/src/layers/LColLayer.h @@ -16,6 +16,7 @@ private: vtkSmartPointer data; vtkSmartPointer particlesBeached; vtkSmartPointer particlesAge; + vtkSmartPointer callback; std::unique_ptr advector; std::shared_ptr uvGrid; int dt = 3600; diff --git a/particle-track-and-trace/src/layers/LGlyphLayer.cpp b/particle-track-and-trace/src/layers/LGlyphLayer.cpp index 170b3f9..39553b4 100644 --- a/particle-track-and-trace/src/layers/LGlyphLayer.cpp +++ b/particle-track-and-trace/src/layers/LGlyphLayer.cpp @@ -22,7 +22,6 @@ vtkSmartPointer LGlyphLayer::createSpawnPointCallback() { vtkNew newPointCallBack; - newPointCallBack->setData(this->data); newPointCallBack->setPoints(this->points); newPointCallBack->setRen(this->ren); newPointCallBack->setUVGrid(this->uvGrid);