#pragma once

#include <QDialog>


namespace Ui {
	class QSimulationLookTableDialogClass;
}

class QSimulationLookTableDialog : public QDialog
{
	Q_OBJECT

public:
	QSimulationLookTableDialog(QWidget *parent = nullptr);
	~QSimulationLookTableDialog();

private:
	Ui::QSimulationLookTableDialogClass* ui;


public  slots:
	void onaccepted();
	void onrejected();

	void onpushButtonOrbitModelClicked(bool);
	void onpushButtonSataSettingClicked(bool);
	void onpushButtonDEMClicked(bool);
	void onpushButtonOutDirClicked(bool);



private: // doppler 处理软件
	void LookTableSimualtionMainProcess(
		QString sateName,
		QString orbitpath, QString SatePath, QString DEMPath, QString outDirPath
		, bool gpuflag, bool looktableflag, bool checkBoxIncAngle, bool DopplerFlag
	);

	void LookTableSimulationDopplerProcess(
		QString DEMPath,
		QString outLookTablePath,

		// 多项式轨道参数
		long double			OribtStartTime, // 轨道模型参考时间
		std::vector<double> PolyfitPx, // 5次项，空余填0
		std::vector<double> PolyfitPy, // 5次项，空余填0
		std::vector<double> PolyfitPz, // 5次项，空余填0
		std::vector<double> PolyfitVx, // 5次项，空余填0
		std::vector<double> PolyfitVy, // 5次项，空余填0
		std::vector<double> PolyfitVz, // 5次项，空余填0


		// 多普勒参数
		double dopplerRefrenceTime,
		std::vector<double> DopplerCentroidCoefficients,// d0 ~ d5， 空余填零

		// 其他成像参数
		double starttime, // 成像开始时间
		double endtime,   // 成像结束时间
		double nearRange, // 近斜距
		double farRange,  // 远斜距
		double PRF, // 脉冲重复采样频率
		double Fs, // 距离采样频率
		double lamda,
		bool gpuflag,
		bool looktableflag,
		bool incflag
	);

	void LocalIncidenceAngleSimulationCompter(
		QString DEMPath,
		QString LookTablePath,
		QString outIncPath,
		long double			OribtStartTime, // 轨道模型参考时间
		std::vector<double> PolyfitPx, // 5次项，空余填0
		std::vector<double> PolyfitPy, // 5次项，空余填0
		std::vector<double> PolyfitPz, // 5次项，空余填0
		std::vector<double> PolyfitVx, // 5次项，空余填0
		std::vector<double> PolyfitVy, // 5次项，空余填0
		std::vector<double> PolyfitVz, // 5次项，空余填0


		double starttime, // 成像开始时间
		double endtime,   // 成像结束时间
		double nearRange, // 近斜距
		double farRange,  // 远斜距
		double PRF, // 脉冲重复采样频率
		double Fs // 距离采样频率

	);

};
