#ifndef SCANCONVERSIONALG_H
#define SCANCONVERSIONALG_H

#include "./ScenarioParams.h"

class ScanConversionAlg
{
private:
	static void linear(Input_t params, QVector<float>& scanXPos, QVector<float>& scanZPos,
					   QVector<float>& gridPixelXPos, QVector<float>& gridPixelZPos);

	static void virtualConvex(Input_t params, QVector<float>& scanXPos, QVector<float>& scanZPos,
							  QVector<float>& gridPixelXPos, QVector<float>& gridPixelZPos);

	static void convex(Input_t params, QVector<float>& scanXPos, QVector<float>& scanZPos,
					   QVector<float>& gridPixelXPos, QVector<float>& gridPixelZPos);

public:
	static void scanConversion(Input_t params, QVector<float>& scanXPos, QVector<float>& scanZPos,
							   QVector<float>& gridPixelXPos, QVector<float>& gridPixelZPos);

	static void virtualScanConversion(QVector<float> pixelXPos, QVector<float> pixelZPos,
									  uint width, uint height,
									  float steering, float virtualOriginalZ,
									  float startDepth, float depth, float vcMaxTheta,
									  QVector<float>& gridPixelR, QVector<float>& gridPixelTheta);

	static void convexScanConversion(QVector<float> pixelXPos, QVector<float> pixelZPos,
									 uint width, uint height,
									 float steering, float angle, float fieldOfView,
									 float probeRadius, float startDepth, float depth,
									 QVector<float>& gridPixelR,  QVector<float>& gridPixelTheta);
};

#endif // SCANCONVERSIONALG_H