Obliczanie pozornej wielkości satelity

9

Piszę program, który polega na obliczeniu pozornej wielkości satelitów z lokalizacji naziemnej. Obecnie mam wewnętrzną wielkość satelitów i kąt fazy słonecznej w stopniach. Nie mogę znaleźć formuły, która działa.

próbowałem

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

(B to kąt fazowy)

... ale to nie działa (zwraca liczby takie jak +30). Wiem, że to źle, ponieważ porównuję to z przepustkami satelitarnymi heavens-above.com.

intrinsicMagnitude = Wielkość wizualna w odległości 1000 km (użyj -1,3)

distanceToSatellite = Odległość obserwatora do satelity w km (użyj 483)

B = Właśnie to próbuję rozgryźć.

W artykule jest napisane, co to jest, ale zawiera kilka innych rzeczy, których nie rozumiem. Kąt fazowy użyty do uzyskania tego powinien wynosić 113.

Docelowy wynik tego równania powinien wynosić około -3.

Nick Brown
źródło
To właśnie pracowałem z stackoverflow.com/questions/19739831/...
Nick Brown
Oto, gdzie równanie pochodzi z satobs.org/seesat/Apr-2001/0313.html
Nick Brown
1
Co to jest „wielkość wewnętrzna”? Napisz odpowiedź w postaci wzorów matematycznych z określonymi symbolami.
Rob Jeffries,
Jest to zwartość satelity z odległości 1000 km. Na przykład użyj -1.3
Nick Brown
1
@ uhoh Wielkość wewnętrzna jest pozorną wielkością obiektu w pełnej fazie z odległości 1000 km
Nick Brown

Odpowiedzi:

3

Odnosi się to do satelitów o nieznanym rozmiarze i orientacji, ale o znanej standardowej wielkości (Standardową wielkość można znaleźć na stronie informacji o satelitach nieba powyżej, liczba ta nazywa się wewnętrzną wielkością). Właściwy wzór to

            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;

To da pozorną wielkość satelity. Uwaga: podałem formułę w języku C #

Nick Brown
źródło
Gratulacje!
uhoh,
2

Gratulacje dla @NickBrown za jego rozwiązanie ! W oparciu o to równanie i kilka dodatkowych odniesień dodam jeszcze trochę.

Obliczenie wielkości wizualnej wymaga trzech parametrów wejściowych

  1. jak dobry jest reflektor
  2. kąt między oświetleniem a widokiem
  3. odległości od iluminatora i widza są od obiektu

W przypadku obiektów astronomicznych używamy wartości bezwzględnej dla punktu nr 1, do obserwacji satelitarnych stosuje się zarówno wielkość bezwzględną, jak i wartość wewnętrzną . Wielkość bezwzględna to jasność wizualna obiektu w odległości 1 AU od Słońca i 1 AU od Ciebie, oglądana w pełnym świetle (kąt fazowy = 0), co oznacza, że ​​siedzisz tuż obok Słońca.

Wielkość wewnętrzna jest podobna, ale jesteś teraz tylko 1000 km od obiektu ze Słońcem nad ramieniem.

Tak czy inaczej, wszystkie informacje o albedo, rozmiarze i kształcie są skupione w absolutnej lub wewnętrznej wielkości, pozostawiając jedynie odległości i kąty.

Kąt między kierunkiem oświetlenia a kierunkiem patrzenia nazywa się kątem fazowym . Pomyślmy na przykład o fazach Księżyca . Gdyby kąt fazowy Księżyca wynosił 90 stopni, byłby to półksiężyc. Zero byłoby księżycem w pełni, a 180 stopni byłoby księżycem w nowiu.

Modulacja jasności w funkcji kąta fazowego została zaproponowana przez Vallerie, EM III, Badanie danych fotometrycznych otrzymanych z satelity sztucznej ziemi , AD nr 419069, Air Force Institute of Technology, Defense Documentation Center, Alexandria, Virginia, 1963, które znalazłem w Obserwacjach i modelowaniu satelitów GEO przy dużych kątach fazowych autorstwa Rity L. Cognion, również w Researchgate

Zależność określa termin

1π(grzech(ϕ)+(π-ϕ)sałata(ϕ))

i wygląda jak

wprowadź opis zdjęcia tutaj

W przypadku satelity, o którym mowa, w odległości 483 kilometrów i wewnętrznej wartości -1.3, pozorna wielkość wydaje się wynosić około -2,0, a jej zależność od kąta fazowego jest następująca:

wprowadź opis zdjęcia tutaj


Nie wszystkie statki kosmiczne są sferyczne z rozproszonymi białymi powierzchniami lub sferycznymi krowimi kształtami.

wprowadź opis zdjęcia tutaj

Zależność kątów fazowych niektórych bardziej znanych kształtów, patrz Ryc. 2 w Widocznej wielkości typowych satelitów na orbitach synchronicznych William E. Krag, MIT, 1974 AD-785 380, który dobrze opisuje problem.

wprowadź opis zdjęcia tutaj

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()
O o
źródło
1
Święta krowa, dziękuję za odpowiedź. Spróbuję zaimplementować to zamiast tego, który podałem. Dam ci znać, jak dobrze jest.
Nick Brown,
@NickBrown Właśnie użyłem twojego równania , nie powinno być inaczej niż twój wynik. Ta odpowiedź służy jedynie dodaniu dodatkowych informacji i wyjaśnień.
uhoh,
Ah, dobrze. Nie przeczytałem w pełni twoich funkcji. dzięki!
Nick Brown,
1
Hmm Mój faktycznie jest niedokładny. Twoje działa idealnie. Zamierzam edytować moją odpowiedź, aby pokazać twoją wersję ac #. dzięki!
Nick Brown,
1
to nie jest naprawdę ważne. Niektórzy używają -1.3, niektórzy używają -1.8
Nick Brown