Tornado-Visualization/datenvisualisierung_sose2024/cartesiangridtohorizontalslicefilter.cpp

59 lines
1.9 KiB
C++

#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
}
float* CartesianGridToHorizontalSliceFilter::passCube() {
// returns the whole cube, we'll perform operations on the cube
// in the mapper itself
// Yes, this is redundant, but I wish to adhere to the code
// structure as proposed in the lecture
return cartesianDataGrid;
}