Tornado-Visualization/datenvisualisierung_sose2024/cartesiangridtohorizontalslicefilter.cpp

52 lines
1.6 KiB
C++
Raw Normal View History

2024-05-20 17:42:22 +00:00
#include "cartesiangridtohorizontalslicefilter.h"
#include <iostream>
CartesianGridToHorizontalSliceFilter::CartesianGridToHorizontalSliceFilter()
{
}
CartesianGridToHorizontalSliceFilter::~CartesianGridToHorizontalSliceFilter()
{
std::cout << "FILTER DESTRUCTOR CALLED!\n";
}
void CartesianGridToHorizontalSliceFilter::setDataSource(float *source) {
cartesianDataGrid = source;
}
void CartesianGridToHorizontalSliceFilter::setSlice(int iz) {
z = iz;
}
void CartesianGridToHorizontalSliceFilter::changeWindComponent(int ic) {
// kinda useless because we already have the function, but whatever
windcomponent = ic;
}
void CartesianGridToHorizontalSliceFilter::setWindComponent(int ic) {
windcomponent = ic;
}
//float* CartesianGridToHorizontalSliceFilter::passSliceMagnitude(int xs, int ys) {
// // We copy the relevant part of our original to our slice array
// // PRO: We can perform isolated operations on this slice array
// // CONTRA: We are slow
// float* slice = new float[xs*ys*3];
// for (int i=0; i < ys; i++) {
// for (int j=0; j< xs; j++) {
// slice[i*xs + j]=cartesianDataGrid[(z*xs*ys + i*xs + j)*3 + windcomponent];
// }
// }
// return slice;
//}
float* CartesianGridToHorizontalSliceFilter::passSlice(int xs, int ys) {
// We only pass the pointer to the beginning of our slice
// PRO: We are blazingly fast
// CONTRA: We perform filtering operations on the source!
return &cartesianDataGrid[z*xs*ys*3+windcomponent];
// We don't even need to pass information about which windcomponent we're using
// We just loop through each 3rd element for graphics
}