我有以下情况:
飞机上的一个点具有3D坐标(X,Y,Z),飞机内部有一个摄像头,用于从地表拍照。对于相机,我在拍摄图像的那一刻也拥有3D坐标(X,Y,Z)。
在这种情况下,我需要计算地球表面上的点与飞机内部摄像头之间的光反射角。
我想要一些建议或想法来计算这个角度。我知道可能的解决方案将使用解析几何。
我已经使用PVLIB库计算了太阳到表面点的入射角,但是在pvlib上找不到确定光反射角的函数。
谢谢我!
答案 0 :(得分:2)
我假设您使用太阳仰角和方位角通过某些公式来计算太阳入射矢量,例如(假设方位角为[N = 0 / E = 90 / S = 180 / W = 270]):>
Vx_s = sin(sun_azim) * cos(sun_elev)
Vy_s = cos(sun_azim) * cos(sun_elev)
Vz_s = sin(sun_elev)
考虑到在平坦表面上的光反射(水平与天顶的法向矢量),反射光的矢量(前向光,不考虑散射/散射射线,例如镜面)将是
Vx_r = sin(sun_azim + 180) * cos(sun_elev)
Vy_r = cos(sun_azim + 180) * cos(sun_elev)
Vz_r = sin(sun_elev)
平面摄像机的向量为:
Vx_p = X_plane - X_surface
Vy_p = Y_plane - Y_surface
Vz_p = Z_plane - Z_surface
然后,反射射线与飞机摄像头之间的角度为(在此示例中考虑到了平面位置矢量不是单位矢量):
alpha = arccos( (Vx_p*Vx_r + Vy_p*Vy_r + Vz_p*Vz_r) / sqrt(Vx_p**2 + Vy_p**2 + Vz_p**2) )