#pragma once
/**
*  基础SARBaseTool 操作
* 
*/
#include <complex>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <omp.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <gdal.h>
#include <gdal_utils.h>
#include <gdal_priv.h>
#include <gdalwarper.h>
#include <proj.h>
#include <string.h>
#include <memory.h>
#include <memory>


#define PI 3.141592653589793238462643383279
#define PI_180 180/3.141592653589793238462643383279
#define T180_PI 3.141592653589793238462643383279/180
#define LIGHTSPEED 299792458
#define LIGHESPEEDGHZ 0.299792458

#define Radians2Degrees(Radians) Radians*PI_180
#define Degrees2Radians(Degrees) Degrees*T180_PI


// 判断是否需要输出为DLL
#define DLLOUT
int Complex2dB(QString in_tiff, QString out_dB_path);
int Amplitude2dB(QString in_tiff, QString out_dB_path);
Eigen::MatrixXd Complex2dB(Eigen::MatrixXcd in_matrix);
Eigen::MatrixXd Complex2dB(Eigen::MatrixXd in_matrix_real, Eigen::MatrixXd in_matrix_imag );

double Complex2Amplitude(std::complex<double> sign);
double Complex2phase(std::complex<double> sign);// 返回弧度制相位



Eigen::MatrixXd Complex2Amplitude(Eigen::MatrixXcd in_matrix);
Eigen::MatrixXd Complex2phase(Eigen::MatrixXcd in_matrix);
// ----------------------------------------------------------------------------------------------------------
// 后向散射系数系统仿真模型

#ifndef DLLOUT

#else

#ifdef __cplusplus
extern "C" {
#endif
#define DllExport   __declspec( dllexport )
	int  __declspec(dllexport) Complex2dB_DLL(QString out_path, QString in_sar_path);
	int  __declspec(dllexport) Amplitude2dB_DLL(QString in_tiff, QString out_dB_path);
#ifdef __cplusplus
}
#endif

#endif

