#pragma once
#include "AllHead.h"
#include "OCCTBaseOperaorClass.h"
#include <QDialog>
#include "ui_QtSARAntModelSetting.h"
#include <QtFreqParamsSetting.h>
#include "QtWidgetsClass_Strip.h"
#include "QtWidgetsClass_Scan.h"
#include "QtWidgetsClass_ISAR.h"
#include "QtWidgetsClass_CircleSAR.h"
#include "QtWidgetsClass_FarSourceSetting.h"
#include "QtWidgetsClass_ImageSetting.h"


///////////////////////////////////////////////////
// 卫星雷达模型
// 默认雷达中心 
// X轴为飞行方向
// Z轴为照射方向   默认左入射为 - ，右入射为 + 
//          X
//          ^ 
// L        |      R
//      Y<--Z
//          |
// TopoSAR : http://radarst.cnjournals.com/html/2022/2/202202004.html
// 1. 创建模型    
// 2. 注入位置、速度方向、入射角、方位角
// 3. 获取雷达天线计算结果
// 4. 渲染模型
//////////////////////////////////////////////////
class antModelClass { // 模型参数
public: 
	antModelClass(QString filpath); // 1. 创建模型    
	antModelClass();
	~antModelClass();
	void initAxis();
public:
	void applyAntModel( // 2. 注入位置、速度方向、入射角、方位角
		double Sx, double Sy, double Sz,  // 卫星坐标
		double Vx,double Vy,double Vz, //  卫星速度
		double incidenceAngle, double AzAngle ,bool isRIGHT=false); // 入射角、方位角 、 左右视 

	void createDefaultAntModel(); // 创建默认模型

	FEKOBase::FEKOantPitionDirect get_antposition_Direct();  // 3. 获取雷达天线计算结果
	Handle(AIS_InteractiveObject) get_antModelShow(); // 4. 渲染模型

private:
	Handle(AIS_InteractiveObject) antModelShow; // 用于展示的雷达模型，
	TopoDS_Shape antModel; // 原始雷达模型 
	FEKOBase::FEKOantPitionDirect antposition_Direct; // 雷达天线的坐标与指向

};




///////////////////////////////////////////////////
//  雷达指向模型设置类
//////////////////////////////////////////////////
class QtSARAntModelSettingClass : public QDialog, public FEKOBase::FEKOSimulationSARClass
{
	Q_OBJECT
public:
	QtSARAntModelSettingClass(QWidget *parent = nullptr);
	~QtSARAntModelSettingClass();

private:
	Ui::QtSARAntModelSettingClass ui;
	QtFreqParamsSetting* Widgetfreqsetting; // 频率设置窗口

	QtWidgetsClass_Strip* WidgetstriMode;// 成像参数设置
	QtWidgetsClass_Scan*	WidgetScanMode;
	QtWidgetsClass_ISAR* WidgetISARMode;
	QtWidgetsClass_CircleSAR* WidgetCirCleSARMode;
	
	QtWidgetsClass_ImageSetting* WidgetImageSetting;
	antModelClass* antModel; // 模型 
	//DocumentCommon* occtdocument; // 文档
	Handle(AIS_InteractiveContext) myContext; // 窗口交互
public:
	
	void removeModeSettingWidget(); // 移除模式设置窗口
	void setOCCTDocument(Handle(AIS_InteractiveContext) myContext);
	// 切换 条带图像、扫描图像、ISAR、圆迹SAR
	void switchStripImageParamsWeight(); // 切换条带图像参数权重
	void switchScanImageParamsWeight(); // 切换扫描图像参数权重
	void switchISARImageParamsWeight(); // 切换ISAR图像参数权重
	void switchCircleSARImageParamsWeight(); // 切换圆迹SAR图像参数权重
	void ReferenceWindows(); // 渲染窗体

	void refreshFEKOSimulationParams();

signals:
	


public slots:
	void OKClickISAR( );
	void OKClickStrip( );
	void OKClickCircleSAR( );
	void OKClickScane( );
	void OKClickFreqSetting( );
	void OKClickImageSetting( );
	
	void on_comboBox_ImageMode_currentIndexChanged(int index);
	void on_pushButton_ffe_clicked();
	void on_comboBox_LookSide_currentIndexChanged(int index);
	void on_horizontalSlider_PRF_valueChanged(int value);
	void on_pushButton_OK_clicked();
	void on_pushButton_Cancel_clicked();
	void on_lineEdit_Range_editingFinished();

	void SelectFFESourcePath(size_t thetaPoints, size_t phiPoints, QString ffePath);
public slots:
	void FEKOSimulationDataparamsChanged_slots() ;
public:
	void bandingsetFEKOSimulationDataparams() override;
};

antModelClass antModelClassFactory();