如何计算立体上的光反射角space

How to calculate the light reflection angle on tridimensional space

我有以下情况:

位于地球表面的一个点,具有 3D 坐标(X、Y、Z)和飞机内部的一个相机,从表面拍摄照片。对于相机,我也有拍摄图像的那一刻的 3D 坐标(X、Y、Z)。

对于这个场景,我需要计算地球表面的点和飞机内部相机之间的光反射角度。

我想要计算这个角度的建议或想法。我知道一个可能的解决方案将使用解析几何。

我已经使用 PVLIB 库计算了表面上的点的太阳入射角,但是我在 pvlib 上找不到确定光反射角的函数。

谢谢你的帮助!!

我假设您使用太阳高度角和方位角通过一些公式计算太阳入射矢量,例如(假设方位角为 [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)

考虑到平面上的光反射(垂直于天顶的法向量),反射光的向量(前向光,不考虑 scattering/dispersion 条光线,例如镜面)将是

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) )