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/LGlyphLayer.cpp
layers/LGlyphLayer.h
layers/LColLayer.cpp
layers/LColLayer.h
layers/Technique.cpp
layers/Technique.h
layers/enums.h

View File

@ -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<RK4AdvectionKernel>(uvGrid);
auto kernelRK4BoundaryChecked = make_unique<SnapBoundaryConditionKernel>(std::move(kernelRK4), uvGrid);
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);
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();
}

View File

@ -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<vtkPolyData> &data) {
this->data = data;
}
void SpawnPointCallback::setPoints(const vtkSmartPointer<vtkPoints> &points) {
this->points = points;
}

View File

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

View File

@ -1,4 +1,4 @@
#include "LGlyphLayer.h"
#include "LColLayer.h"
#include "../commands/SpawnPointCallback.h"
#include <vtkActor2D.h>
#include <vtkGlyph2D.h>
@ -20,9 +20,8 @@
#include "../CartographicTransformation.h"
vtkSmartPointer<SpawnPointCallback> LGlyphLayer::createSpawnPointCallback() {
auto newPointCallBack = vtkSmartPointer<SpawnPointCallback>::New();
newPointCallBack->setData(this->data);
vtkSmartPointer<SpawnPointCallback> LColLayer::createSpawnPointCallback() {
vtkNew<SpawnPointCallback> newPointCallBack;
newPointCallBack->setPoints(this->points);
newPointCallBack->setRen(this->ren);
newPointCallBack->setUVGrid(this->uvGrid);
@ -57,7 +56,7 @@ vtkSmartPointer<vtkLookupTable> buildLut(int n) {
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->SetLayer(2);
@ -105,9 +104,10 @@ LGlyphLayer::LGlyphLayer(std::shared_ptr<UVGrid> uvGrid, std::unique_ptr<Advecti
actor->SetMapper(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<vtkRenderWindowInteractor> interactor) {
auto newPointCallBack = createSpawnPointCallback();
interactor->AddObserver(vtkCommand::LeftButtonPressEvent, newPointCallBack);
interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, newPointCallBack);
interactor->AddObserver(vtkCommand::MouseMoveEvent, newPointCallBack);
void LColLayer::addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
interactor->AddObserver(vtkCommand::LeftButtonPressEvent, this->callback);
interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, this->callback);
interactor->AddObserver(vtkCommand::MouseMoveEvent, this->callback);
}
void LGlyphLayer::removeObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
// todo: logic for these
void LColLayer::removeObservers(vtkSmartPointer<vtkRenderWindowInteractor> 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;
}

View File

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

View File

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