计算卫星的视星等


9

我正在编写一个程序,其中涉及从地面位置计算卫星的视在大小。我目前有卫星的固有大小和以度为单位的太阳相位角。我似乎找不到有效的公式。

我试过了

magnitude = intrinsicMagnitude - 15 + 5 * Math.Log(distanceToSatellite) - 2.5 * Math.Log(Math.Sin(B) + (Math.PI - B) * Math.Cos(B));

(B是相角)

...但是它不起作用(返回的数字是+30)。我知道这是错误的,因为我正在将其与Heavens-above.com卫星通行证进行比较。

nativeMagnitude =距离1000公里处的视觉大小(使用-1.3)

distanceToSatellite =观测者到卫星的距离,以公里为单位(使用483)

B =这就是我要弄清楚的。

在论文中,它说了什么,但说了一些我不理解的东西。您要使用的相位角应为113。

该方程式的目标输出应约为-3。




1
什么是“内在量级”?请根据数学公式写出答案,并定义符号。
罗布·杰弗里斯

它的卫星高度距1000公里。例如,使用-1.3
Nick Brown

1
@uhoh内在震级是物体在1000公里以外的全相中的视在震级
Nick Brown

Answers:


3

这适用于大小和方向未知但标准幅值已知的卫星(标准幅值可以在上方的卫星信息页面上找到,其数量称为固有幅值)适当的公式为

            double distanceToSatellite = 485; //This is in KM
            double phaseAngleDegrees = 113.1; //Angle from sun->satellite->observer
            double pa = phaseAngleDegrees * 0.0174533; //Convert the phase angle to radians
            double intrinsicMagnitude = -1.8; //-1.8 is std. mag for iss


            double term_1 = intrinsicMagnitude;
            double term_2 = 5.0 * Math.Log10(distanceToSatellite / 1000.0);

            double arg = Math.Sin(pa) + (Math.PI - pa) * Math.Cos(pa);
            double term_3 = -2.5 * Math.Log10(arg);

            double apparentMagnitude = term_1 + term_2 + term_3;

这将给出卫星的视在大小。注意:我在C#中给出了公式


恭喜你!
uhoh

2

恭喜@NickBrown提供解决方案!基于该方程式和一些其他参考,我将添加更多内容。

计算视觉强度需要三个输入参数

  1. 物体的反射率有多好
  2. 照明与视野之间的角度
  3. 照明器和观察者之间的距离与物体的距离

对于天文物体,我们对项目1使用绝对震级,对于卫星观测,则同时使用绝对震级和固有震级。绝对大小是物体在距太阳1 AU和距您1 AU处的视觉大小,以全视角(相角= 0)观看,这意味着您坐在太阳旁边。

内在震级相似,但是现在您距离物体只有1000公里,太阳在肩上。

无论哪种方式,所有的反照率,大小和形状信息都集中在绝对或固有量级中,仅留下距离和角度。

照明方向与观察方向之间的角度称为相位角。想想月相。如果月球的相位角为90度,那将是一个半月。零将是满月,而180度将是新月。

亮度调制作为相角的函数由瓦莱里(Vallerie)于EM III,从人造地球卫星接收的光度数据研究,AD#419069,空军技术学院,国防文献中心,弗吉尼亚州亚历山大市,1963年提出,我在Researchgate的 Rita L. Cognion 在大相位角的GEO卫星观测和建模中发现了这一点

依赖性由以下术语给出

1个πϕ+π-ϕcosϕ

看起来像

在此处输入图片说明

对于距离为483公里且固有大小为-1.3的问题卫星,其视在大小似乎约为-2.0,并且其对相角的依赖性如下:

在此处输入图片说明


并非所有航天器都是球形的,具有弥漫的白色表面,也不是球形的牛形。

在此处输入图片说明

有关某些形状的相位角的相关性,请参见同步轨道中典型卫星的可见幅度的图2,William E. Krag,MIT,1974 AD-785 380,很好地描述了这个问题。

在此处输入图片说明

def Mapparent_from_Mintrinsic(Mint, d_km, pa):
    term_1 = Mint
    term_2 = +5.0 * np.log10(d_km/1000.)
    arg    = np.sin(pa) + (pi - pa) * np.cos(pa)
    term_3 = -2.5 * np.log10(arg)
    return term_1 + term_2 + term_3

import numpy as np
import matplotlib.pyplot as plt

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
degs, rads = 180/pi, pi/180

Mintrinsic   = -1.3
d_kilometers = 483.

phase_angles = np.linspace(0, pi, 181)

Mapp = Mapparent_from_Mintrinsic(Mintrinsic, d_kilometers, phase_angles)

# https://astronomy.stackexchange.com/q/28744/7982
# https://www.researchgate.net/publication/268194552_Large_phase_angle_observations_of_GEO_satellites
# https://amostech.com/TechnicalPapers/2013/POSTER/COGNION.pdf
# https://apps.dtic.mil/dtic/tr/fulltext/u2/785380.pdf

if True:
    plt.figure()

    F = (1./pi)*(np.sin(phase_angles) + (pi-phase_angles)*np.cos(phase_angles))

    plt.suptitle('F = (1/pi)(sin(phi) + (pi-phi)cos(phi))', fontsize=16)

    plt.subplot(2, 1, 1)
    plt.plot(degs*phase_angles, F)
    plt.ylabel('F', fontsize=16)

    plt.subplot(2, 1, 2)
    plt.plot(degs*phase_angles, -2.5*np.log10(F))
    plt.xlabel('phase angle (degs)', fontsize=16)
    plt.ylabel('-2.5log10(F)', fontsize=16)
    plt.ylim(-1, 11)

    plt.show()

if True:
    plt.figure()
    plt.plot(degs*phase_angles, Mapp)
    plt.plot(degs*phase_angles[113], Mapp[113], 'ok')
    plt.text(90, -5, '{:0.2f} at {:0.1f} deg'.format(Mapp[113], 113), fontsize=16)
    plt.xlabel('phase angle (degs)', fontsize=16)
    plt.ylabel('mag', fontsize=16)
    plt.title('apparent mag of intrinsic mag=-1.3 at 483 km', fontsize=16)
    plt.ylim(-10, 15)
    plt.show()

1
圣牛感谢您的回答。我将尝试实现这一目标,而不是我提供的目标。病会让你知道它有多好。
尼克·布朗

@NickBrown我只使用了您的方程式,它与您的结果应该没有任何不同。该答案仅用于添加其他背景信息和说明。
uhoh

啊好吧。我没有完全阅读您的功能。谢谢!
尼克·布朗

1
嗯 我的实际上是不准确的。您的作品完美无缺。我将编辑我的答案以显示您的ac#版本。谢谢!
尼克·布朗

1
这不是重要。有些人使用-1.3,有些人使用-1.8
Nick Brown
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.