修复编写bug

pull/5/head
chenzenghui 2025-02-27 16:45:48 +08:00
parent 57e998686c
commit d033151e77
1 changed files with 6 additions and 6 deletions

View File

@ -33,7 +33,7 @@ __device__ __host__ Vector3 vec_cross(Vector3 a, Vector3 b) {
__device__ __host__ Vector3 vec_normalize(Vector3 v) {
double len = sqrt(vec_dot(v, v));
return (len > 1e-12) ? (Vector3) { v.x / len, v.y / len, v.z / len } : v;
return (len > 1e-12) ? Vector3 { v.x / len, v.y / len, v.z / len } : v;
}
// 计算视线交点T
@ -46,18 +46,18 @@ extern __device__ __host__ Vector3 compute_T(Vector3 S, Vector3 ray, double H) {
double C = (S.x * S.x + S.y * S.y) / (a_h * a_h) + S.z * S.z / (WGS84_B * WGS84_B) - 1.0;
double disc = B * B - 4 * A * C;
if (disc < 0) return (Vector3) { NAN, NAN, NAN };
if (disc < 0) return Vector3 { NAN, NAN, NAN };
double sqrt_d = sqrt(disc);
double t = fmax((-B - sqrt_d) / (2 * A), (-B + sqrt_d) / (2 * A));
return (t > 1e-6) ? (Vector3) { S.x + dir.x * t, S.y + dir.y * t, S.z + dir.z * t }
: (Vector3) { NAN, NAN, NAN };
return (t > 1e-6) ? Vector3 { S.x + dir.x * t, S.y + dir.y * t, S.z + dir.z * t }
: Vector3 { NAN, NAN, NAN };
}
// 构建平面基底
extern __device__ __host__ void compute_basis(Vector3 S, Vector3 T, Vector3* e1, Vector3* e2) {
Vector3 ST = vec_normalize(vec_sub(T, S));
Vector3 SO = vec_normalize(vec_sub((Vector3) { 0, 0, 0 }, S)); // S->O方向
Vector3 SO = vec_normalize(vec_sub(Vector3 { 0, 0, 0 }, S)); // S->O方向
*e1 = vec_normalize(vec_cross(ST, SO));
*e2 = vec_normalize(vec_cross(*e1, ST));
@ -108,7 +108,7 @@ extern __device__ __host__ Vector3 compute_P(Vector3 S, Vector3 T, double R, dou
// 计算参考角度方向
Vector3 ST_vec = vec_sub(T, S);
Vector3 SO_vec = vec_sub((Vector3) { 0, 0, 0 }, S);
Vector3 SO_vec = vec_sub(Vector3 { 0, 0, 0 }, S);
Vector3 ref_cross = vec_cross(SO_vec, ST_vec);
double ref_sign = ref_cross.z; // 取Z分量判断方向