lCol same func as lGlyph

This commit is contained in:
Djairo Hougee 2024-05-26 17:21:15 +02:00
parent cc3e62af05
commit 0fa9486363
7 changed files with 28 additions and 29 deletions

View File

@ -54,6 +54,8 @@ add_executable(ParticleTrackTrace MACOSX_BUNDLE main.cpp
layers/Layer.h layers/Layer.h
layers/LGlyphLayer.cpp layers/LGlyphLayer.cpp
layers/LGlyphLayer.h layers/LGlyphLayer.h
layers/LColLayer.cpp
layers/LColLayer.h
layers/Technique.cpp layers/Technique.cpp
layers/Technique.h layers/Technique.h
layers/enums.h layers/enums.h

View File

@ -11,6 +11,7 @@
#include "../layers/EColLayer.h" #include "../layers/EColLayer.h"
#include "../layers/EGlyphLayer.h" #include "../layers/EGlyphLayer.h"
#include "../layers/LGlyphLayer.h" #include "../layers/LGlyphLayer.h"
#include "../layers/LColLayer.h"
#include "../Program.h" #include "../Program.h"
#include "../advection/UVGrid.h" #include "../advection/UVGrid.h"
#include "../advection/kernel/RK4AdvectionKernel.h" #include "../advection/kernel/RK4AdvectionKernel.h"
@ -55,11 +56,16 @@ void MainWindow::setupTechniques() {
auto kernelRK4 = make_unique<RK4AdvectionKernel>(uvGrid); auto kernelRK4 = make_unique<RK4AdvectionKernel>(uvGrid);
auto kernelRK4BoundaryChecked = make_unique<SnapBoundaryConditionKernel>(std::move(kernelRK4), uvGrid); auto kernelRK4BoundaryChecked = make_unique<SnapBoundaryConditionKernel>(std::move(kernelRK4), uvGrid);
auto lGlyph = new LGlyphLayer(uvGrid, std::move(kernelRK4BoundaryChecked)); auto lGlyph = new LGlyphLayer(uvGrid, std::move(kernelRK4BoundaryChecked));
auto kernelRK4_2 = make_unique<RK4AdvectionKernel>(uvGrid);
auto kernelRK4BoundaryChecked_2 = make_unique<SnapBoundaryConditionKernel>(std::move(kernelRK4_2), uvGrid);
auto lCol = new LColLayer(uvGrid, std::move(kernelRK4BoundaryChecked_2));
lGlyph->setDt(3600); lGlyph->setDt(3600);
lCol->setDt(3600);
technique1->addLayer(lGlyph); technique1->addLayer(lGlyph);
// technique2->addLayer(new LColLayer(uvGrid)); // TODO: add LColLayer technique2->addLayer(lCol);
technique2->addLayer(lGlyph); // technique2->addLayer(lGlyph);
program->addTechnique(technique1); program->addTechnique(technique1);
program->addTechnique(technique2); program->addTechnique(technique2);
@ -69,8 +75,6 @@ void MainWindow::setupTechniques() {
// TODO: implement feature to call this function on widget // TODO: implement feature to call this function on widget
// l->spoofPoints(); // l->spoofPoints();
// l->cycleGlyphStyle(); // l->cycleGlyphStyle();
} }

View File

@ -51,8 +51,7 @@ void SpawnPointCallback::Execute(vtkObject *caller, unsigned long evId, void *ca
} }
SpawnPointCallback::SpawnPointCallback() : data(nullptr), SpawnPointCallback::SpawnPointCallback() : points(nullptr),
points(nullptr),
inverseCartographicProjection(nullptr), inverseCartographicProjection(nullptr),
uvGrid(nullptr) { } uvGrid(nullptr) { }
@ -60,10 +59,6 @@ SpawnPointCallback *SpawnPointCallback::New() {
return new SpawnPointCallback; return new SpawnPointCallback;
} }
void SpawnPointCallback::setData(const vtkSmartPointer<vtkPolyData> &data) {
this->data = data;
}
void SpawnPointCallback::setPoints(const vtkSmartPointer<vtkPoints> &points) { void SpawnPointCallback::setPoints(const vtkSmartPointer<vtkPoints> &points) {
this->points = points; this->points = points;
} }

View File

@ -19,8 +19,6 @@ public:
void setPoints(const vtkSmartPointer<vtkPoints> &points); void setPoints(const vtkSmartPointer<vtkPoints> &points);
void setData(const vtkSmartPointer<vtkPolyData> &data);
void setRen(const vtkSmartPointer<vtkRenderer> &ren); void setRen(const vtkSmartPointer<vtkRenderer> &ren);
void setBeached(const vtkSmartPointer<vtkIntArray> &parts); void setBeached(const vtkSmartPointer<vtkIntArray> &parts);
@ -30,7 +28,6 @@ public:
void setUVGrid(const std::shared_ptr<UVGrid> &uvGrid); void setUVGrid(const std::shared_ptr<UVGrid> &uvGrid);
private: private:
vtkSmartPointer<vtkPolyData> data;
vtkSmartPointer<vtkPoints> points; vtkSmartPointer<vtkPoints> points;
vtkSmartPointer<vtkRenderer> ren; vtkSmartPointer<vtkRenderer> ren;
vtkSmartPointer<vtkIntArray> particlesBeached; vtkSmartPointer<vtkIntArray> particlesBeached;

View File

@ -1,4 +1,4 @@
#include "LGlyphLayer.h" #include "LColLayer.h"
#include "../commands/SpawnPointCallback.h" #include "../commands/SpawnPointCallback.h"
#include <vtkActor2D.h> #include <vtkActor2D.h>
#include <vtkGlyph2D.h> #include <vtkGlyph2D.h>
@ -20,9 +20,8 @@
#include "../CartographicTransformation.h" #include "../CartographicTransformation.h"
vtkSmartPointer<SpawnPointCallback> LGlyphLayer::createSpawnPointCallback() { vtkSmartPointer<SpawnPointCallback> LColLayer::createSpawnPointCallback() {
auto newPointCallBack = vtkSmartPointer<SpawnPointCallback>::New(); vtkNew<SpawnPointCallback> newPointCallBack;
newPointCallBack->setData(this->data);
newPointCallBack->setPoints(this->points); newPointCallBack->setPoints(this->points);
newPointCallBack->setRen(this->ren); newPointCallBack->setRen(this->ren);
newPointCallBack->setUVGrid(this->uvGrid); newPointCallBack->setUVGrid(this->uvGrid);
@ -57,7 +56,7 @@ vtkSmartPointer<vtkLookupTable> buildLut(int n) {
return lut; return lut;
} }
LGlyphLayer::LGlyphLayer(std::shared_ptr<UVGrid> uvGrid, std::unique_ptr<AdvectionKernel> advectionKernel) { LColLayer::LColLayer(std::shared_ptr<UVGrid> uvGrid, std::unique_ptr<AdvectionKernel> advectionKernel) {
this->ren = vtkSmartPointer<vtkRenderer>::New(); this->ren = vtkSmartPointer<vtkRenderer>::New();
this->ren->SetLayer(2); this->ren->SetLayer(2);
@ -105,9 +104,10 @@ LGlyphLayer::LGlyphLayer(std::shared_ptr<UVGrid> uvGrid, std::unique_ptr<Advecti
actor->SetMapper(mapper); actor->SetMapper(mapper);
this->ren->AddActor(actor); this->ren->AddActor(actor);
this->callback = createSpawnPointCallback();
} }
void LGlyphLayer::spoofPoints() { void LColLayer::spoofPoints() {
for (int i=0; i < 330; i+=5) { for (int i=0; i < 330; i+=5) {
for (int j=0; j < 330; j+=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); 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(); this->points->Modified();
} }
void LGlyphLayer::updateData(int t) { void LColLayer::updateData(int t) {
const int SUPERSAMPLINGRATE = 4; const int SUPERSAMPLINGRATE = 4;
double point[3], oldX, oldY; double point[3], oldX, oldY;
bool modifiedData = false; bool modifiedData = false;
@ -166,18 +166,19 @@ void LGlyphLayer::updateData(int t) {
} }
} }
void LGlyphLayer::addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) { void LColLayer::addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
auto newPointCallBack = createSpawnPointCallback(); interactor->AddObserver(vtkCommand::LeftButtonPressEvent, this->callback);
interactor->AddObserver(vtkCommand::LeftButtonPressEvent, newPointCallBack); interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, this->callback);
interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, newPointCallBack); interactor->AddObserver(vtkCommand::MouseMoveEvent, this->callback);
interactor->AddObserver(vtkCommand::MouseMoveEvent, newPointCallBack);
} }
void LGlyphLayer::removeObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) { void LColLayer::removeObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
// todo: logic for these 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; this->dt = dt;
} }

View File

@ -16,6 +16,7 @@ private:
vtkSmartPointer<vtkPolyData> data; vtkSmartPointer<vtkPolyData> data;
vtkSmartPointer<vtkIntArray> particlesBeached; vtkSmartPointer<vtkIntArray> particlesBeached;
vtkSmartPointer<vtkIntArray> particlesAge; vtkSmartPointer<vtkIntArray> particlesAge;
vtkSmartPointer<SpawnPointCallback> callback;
std::unique_ptr<AdvectionKernel> advector; std::unique_ptr<AdvectionKernel> advector;
std::shared_ptr<UVGrid> uvGrid; std::shared_ptr<UVGrid> uvGrid;
int dt = 3600; int dt = 3600;

View File

@ -22,7 +22,6 @@
vtkSmartPointer<SpawnPointCallback> LGlyphLayer::createSpawnPointCallback() { vtkSmartPointer<SpawnPointCallback> LGlyphLayer::createSpawnPointCallback() {
vtkNew<SpawnPointCallback> newPointCallBack; vtkNew<SpawnPointCallback> newPointCallBack;
newPointCallBack->setData(this->data);
newPointCallBack->setPoints(this->points); newPointCallBack->setPoints(this->points);
newPointCallBack->setRen(this->ren); newPointCallBack->setRen(this->ren);
newPointCallBack->setUVGrid(this->uvGrid); newPointCallBack->setUVGrid(this->uvGrid);