#pragma once


#include <vtkSmartPointer.h>
#include <vtkUnstructuredGrid.h>
#include <vtkMultiBlockDataSet.h>
#include <map>
#include <complex>

class circulation
{
public:
	circulation();

	vtkSmartPointer<vtkUnstructuredGrid> createCirculationPath(double x_0, double y_0, double z_0, double radius, double vec_x, double vec_y, double vec_z);

	vtkSmartPointer<vtkDataSet> getCirculationPathData();
	std::complex<double> execute();

	void setPath(std::string);
	void addSourceGrid(vtkSmartPointer<vtkUnstructuredGrid>);
	void setCirculationGrid(vtkSmartPointer<vtkUnstructuredGrid>);
	void setDirectionVector(double x, double y, double z);


private:
	std::string path;
	double vec_x, vec_y, vec_z;
	vtkSmartPointer<vtkUnstructuredGrid> circulationGrid;
	vtkSmartPointer<vtkMultiBlockDataSet> sourceGrids;
	std::vector<double> getBoundingBox(vtkSmartPointer<vtkUnstructuredGrid> grid);

};