pull/3/head
陈增辉 2025-02-01 21:13:37 +08:00
commit b67b4c61a2
2 changed files with 17 additions and 29 deletions

View File

@ -27,10 +27,10 @@ __device__ double GPU_getSigma0dB(CUDASigmaParam param, double theta) {//
__device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal( __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
double RstX, double RstY, double RstZ, double RstX, double RstY, double RstZ,
double antXaxisX, double antXaxisY, double antXaxisZ, double AntXaxisX, double AntXaxisY, double AntXaxisZ,
double antYaxisX, double antYaxisY, double antYaxisZ, double AntYaxisX, double AntYaxisY, double AntYaxisZ,
double antZaxisX, double antZaxisY, double antZaxisZ, double AntZaxisX, double AntZaxisY, double AntZaxisZ,
double antDirectX, double antDirectY, double antDirectZ double AntDirectX, double AntDirectY, double AntDirectZ
) { ) {
CUDAVectorEllipsoidal result{ 0,0,-1 }; CUDAVectorEllipsoidal result{ 0,0,-1 };
@ -38,15 +38,6 @@ __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
double Xst = -1 * RstX; // 卫星 --> 地面 double Xst = -1 * RstX; // 卫星 --> 地面
double Yst = -1 * RstY; double Yst = -1 * RstY;
double Zst = -1 * RstZ; double Zst = -1 * RstZ;
double AntXaxisX = antXaxisX;
double AntXaxisY = antXaxisY;
double AntXaxisZ = antXaxisZ;
double AntYaxisX = antYaxisX;
double AntYaxisY = antYaxisY;
double AntYaxisZ = antYaxisZ;
double AntZaxisX = antZaxisX;
double AntZaxisY = antZaxisY;
double AntZaxisZ = antZaxisZ;
// 归一化 // 归一化
double RstNorm = sqrtf(Xst * Xst + Yst * Yst + Zst * Zst); double RstNorm = sqrtf(Xst * Xst + Yst * Yst + Zst * Zst);
@ -73,15 +64,12 @@ __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
double Zant = (Rx * Xy * Yz - Rx * Xz * Yy - Ry * Xx * Yz + Ry * Xz * Yx + Rz * Xx * Yy - Rz * Xy * Yx) / (Xx * Yy * Zz - Xx * Yz * Zy - Xy * Yx * Zz + Xy * Yz * Zx + Xz * Yx * Zy - Xz * Yy * Zx); double Zant = (Rx * Xy * Yz - Rx * Xz * Yy - Ry * Xx * Yz + Ry * Xz * Yx + Rz * Xx * Yy - Rz * Xy * Yx) / (Xx * Yy * Zz - Xx * Yz * Zy - Xy * Yx * Zz + Xy * Yz * Zx + Xz * Yx * Zy - Xz * Yy * Zx);
// 计算theta 与 phi // 计算theta 与 phi
double Norm = sqrtf(Xant * Xant + Yant * Yant + Zant * Zant); // 计算 pho double Norm = sqrtf(Xant * Xant + Yant * Yant + Zant * Zant); // 计算 pho
double ThetaAnt = abs(Zant - Norm)<PRECISIONTOLERANCE?0: acosf(Zant / Norm); // theta Óë ZÖáµÄ¼Ð½Ç double Zn = Zant / Norm;
double PhiAnt = atanf(Yant / Xant); // -pi/2 ~pi/2 double ThetaAnt = ( - 1 > Zn) ? PI : (Zn > 1 ? 0 : acos(Zn));// acosf(Zant / Norm); // theta Óë ZÖáµÄ¼Ð½Ç
double PhiAnt = abs(Xant)<PRECISIONTOLERANCE ?0: atanf(Yant / Xant); // -pi/2 ~pi/2
if (isnan(ThetaAnt)) {
printf("theta is nan,[Xant,Yant,Zant,Norm,Zn,Z1]=[%f,%f,%f,%f,%f,%f];\n",
Xant, Yant, Zant,Norm, Zant / Norm, Zant / Norm-1);
}
if (abs(Yant) < PRECISIONTOLERANCE) { // X轴上 if (abs(Yant) < PRECISIONTOLERANCE) { // X轴上
PhiAnt = 0; PhiAnt = 0;
@ -273,12 +261,12 @@ __global__ void CUDA_Kernel_Computer_R_amp(
} }
} }
ampGain = TansantPatternGain * antPatternGain; ampGain = TansantPatternGain * antPatternGain;
if (10 * log10(ampGain / maxReceiveAntPatternValue / maxTransAntPatternValue) < -3) { // СÓÚ-3dB //if (10 * log10(ampGain / maxReceiveAntPatternValue / maxTransAntPatternValue) < -3) { // СÓÚ-3dB
d_temp_R[idx] = 0; // d_temp_R[idx] = 0;
d_temp_amps[idx] = 0; // d_temp_amps[idx] = 0;
return; // return;
} //}
else {} //else {}

View File

@ -112,7 +112,7 @@ void QImageSARRFPC::onpushButtonTaskxmlClieck()
void QImageSARRFPC::onpushButtondemClieck() void QImageSARRFPC::onpushButtondemClieck()
{ {
// 调用文件选择对话框并选择一个 .tif 文件 // 调用文件选择对话框并选择一个 .tif 文件
QString fileName = QFileDialog::getSaveFileName(this, QString fileName = QFileDialog::getOpenFileName(this,
u8"dem文件", // 对话框标题 u8"dem文件", // 对话框标题
"", // 初始目录,可以设置为路径 "", // 初始目录,可以设置为路径
u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器 u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器
@ -128,7 +128,7 @@ void QImageSARRFPC::onpushButtondemClieck()
void QImageSARRFPC::onpushButtonSloperClieck() void QImageSARRFPC::onpushButtonSloperClieck()
{ {
// 调用文件选择对话框并选择一个 .tif 文件 // 调用文件选择对话框并选择一个 .tif 文件
QString fileName = QFileDialog::getSaveFileName(this, QString fileName = QFileDialog::getOpenFileName(this,
u8"sloper文件", // 对话框标题 u8"sloper文件", // 对话框标题
"", // 初始目录,可以设置为路径 "", // 初始目录,可以设置为路径
u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器 u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器
@ -144,7 +144,7 @@ void QImageSARRFPC::onpushButtonSloperClieck()
void QImageSARRFPC::onpushButtonlandcoverClieck() void QImageSARRFPC::onpushButtonlandcoverClieck()
{ {
// 调用文件选择对话框并选择一个 .tif 文件 // 调用文件选择对话框并选择一个 .tif 文件
QString fileName = QFileDialog::getSaveFileName(this, QString fileName = QFileDialog::getOpenFileName(this,
u8"地表覆盖数据", // 对话框标题 u8"地表覆盖数据", // 对话框标题
"", // 初始目录,可以设置为路径 "", // 初始目录,可以设置为路径
u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器 u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)"); // 文件类型过滤器