
Um pacote python para gerar gráficos de estrelas da astronomia circular (passado, presente e futuro) com projeção esférica para corrigir distorções com todas as estrelas da IAU precisas mais de 400.000 anos com movimento adequado e precessão dos equinócios
Plot estrelas no Hemisfério Sul para o ano de 2024 (sem rótulos de estrelas)
import star_chart_spherical_projection as scsp
scsp . plotStereographicProjection ( northOrSouth = "South" ,
displayStarNamesLabels = False ,
yearSince2000 = 24 )Plote algumas estrelas embutidas e duas novas estrelas definidas pelo usuário no Hemisfério Norte para o ano de 1961 (2000-39) (com rótulos de estrelas e em vermelho). Isso usa os dois métodos para definir o movimento adequado para novas estrelas: com um determinado movimento e ângulo adequado e com a velocidade adequada do movimento na declinação e ascensão direita
import star_chart_spherical_projection as scsp
exalibur_star = scsp . newStar ( starName = "Exalibur" ,
ra = "14.04.23" ,
dec = 64.22 ,
properMotionSpeed = 12.3 ,
properMotionAngle = 83 ,
magnitudeVisual = 1.2 )
karaboudjan_star = scsp . newStar ( starName = "Karaboudjan" ,
ra = "3.14.15" ,
dec = 10.13 ,
properMotionSpeedRA = 57.6 ,
properMotionSpeedDec = 60.1 ,
magnitudeVisual = 0.3 )
scsp . plotStereographicProjection ( northOrSouth = "North" ,
builtInStars = [ "Vega" , "Arcturus" , "Altair" ],
userDefinedStars = [ exalibur_star , karaboudjan_star ],
displayStarNamesLabels = True ,
fig_plot_color = "red" ,
yearSince2000 = - 39 )Retorne a posição final de um Vega (pode ser uma única estrela ou uma lista de estrelas) após 11.500 anos em que Vega é a nova estrela do Polo Norte (estrela mais próxima de +90 °)
import star_chart_spherical_projection as scsp
star_final_pos_dict = scsp . finalPositionOfStars ( builtInStars = [ "Vega" ],
yearSince2000 = 11500 ,
save_to_csv = "final_star_positions.csv" ) Retorna um dicionário com uma estrela e sua declinação e ascensão direita: {'Vega': {'Declination': 83.6899118156341, 'RA': '05.38.21'}}
A posição final das estrelas é salva em final_star_positions.csv com os cabeçalhos ["Nome da estrela", "Ascensão direita (hh.mm.ss)", "declinação (dd.ss)"]]
Instalação do Pypi pip em pypi.org/project/star-chart-spherical-projejection/
pip install star-chart-spherical-projection
O primeiro passo para plotar a esfera celestial em um gráfico 2D é mapear a ascensão direita da estrela como horas ao longo do gráfico (o valor teta da plotagem polar de matplotlibe) e a declinação como a distância do centro do círculo (valor do raio da plotagem polar do matplotlib). No entanto, tentar mapear diretamente a ascensão e a declinação certos causará distorção, pois os ângulos entre as estrelas ao longo da declinação não são mais conservados. À esquerda, a constelação da dique grande é esticada em uma forma desconhecida devido a essa distorção. Ao contabilizar a transformação esférica, o gráfico de estrelas pode ser corrigido como visto à direita.
| Sem correção | Com correção |
|---|---|
![]() | ![]() |
A esfera é projetada no Polo Sul (via projeção estereográfica):
Da perspectiva de um observador na superfície da Terra, as estrelas parecem sentar ao longo da superfície da esfera celestial-uma esfera imaginária do raio arbitrário com a terra em seu centro. Todos os objetos no céu aparecerão projetados na esfera celestial, independentemente de sua verdadeira distância da Terra. A posição de cada estrela é dada por dois valores. A declinação é a distância angular do equador celestial e a ascensão direita é a distância da posição do equinócio vernal. Durante o curso de um dia completo de 24 horas, as estrelas parecem girar pelo céu como resultado da rotação da Terra, mas sua posição é fixa. A posição real de uma estrela muda com o tempo como resultado combinado do pequeno movimento da estrela (movimento adequado), bem como da mudança do eixo rotacional da terra (precessão).
A projeção esférica pode superar a distorção angular convertendo a posição da declinação em:
# Projected from South Pole (Northern Hemisphere)
north_hemisphere_declination = tan(45° + (original_declination / 2))
# Projected from North Pole (Southern Hemisphere)
south_hemisphere_declination = tan(45° - (original_declination / 2))
Onde no hemisfério norte, as projeções são formadas a partir do Polo Sul: 
O pacote de gráficos de estrelas vem com mais de centenas de estrelas mais brilhantes como parte de uma biblioteca embutida. No entanto, uma nova estrela pode ser facilmente adicionada para plotagem ou cálculos, criando um objeto Newstar. O objeto Newstar exigirá alguns recursos importantes que o plotteroographicprojeção () e o finalpositionofstars () agora podem aceitar como um argumento adicional.
Isso permite a criação de uma nova estrela de duas maneiras:
1. Com uma velocidade de movimento adequada e um ângulo de movimento adequado
Como visto em in the-sky.org para polux
star_chart_spherical_projection.newStar(starName=None,
ra=None,
dec=None,
properMotionSpeed=None,
properMotionAngle=None,
magnitudeVisual=None)
Com a velocidade adequada do movimento ao longo da ascensão e declinação certos
Como visto em wikipeida.og para polux
star_chart_spherical_projection.newStar(starName=None,
ra=None,
dec=None,
properMotionSpeedRA=None,
properMotionSpeedDec=None,
magnitudeVisual=None)
NOTA IMPORTANTE: O movimento adequado de RA/DEC será convertido da velocidade ao longo da ascensão e declinação direita para uma velocidade de movimento adequada ( properMotionSpeed ) e um ângulo ( properMotionAngle ) para outros cálculos
Plotereographicprojeção ()
Trama estrelas em uma trama polar estereográfica
plotStereographicProjection(northOrSouth=None,
builtInStars=[],
declination_min=None,
yearSince2000=0,
displayStarNamesLabels=True,
displayDeclinationNumbers=True,
incrementBy=10,
isPrecessionIncluded=True,
maxMagnitudeFilter=None,
userDefinedStars=[],
onlyDisplayUserStars=False,
showPlot=True,
fig_plot_title=None,
fig_plot_color="C0",
figsize_n=12,
figsize_dpi=100,
save_plot_name=None)
| Northorsouth = "Norte" (-30 ° a 90 °) (sem rótulos de estrela) | Northorsouth = "Sul" (30 ° a -90 °) (sem rótulos de estrela) |
|---|---|
| BuiltInstars = [] (inclui All Stars, padrão) | BuiltInstars = ["Vega", "Arcturus", "Enif", "Caph", "Mimosa"] |
|---|---|
| declinação_min = -30 ° (padrão) | declinação_min = 10 ° |
|---|---|
| ano, | ANENTECE2000 = -3100 |
|---|---|
| DisplaySTarnamesLabels = true (padrão) | DisplaySTarnamesLabels = false |
|---|---|
| displayDeclinationNumbers = true (padrão) (sem rótulos de estrela) | DisplayDeclinationNumbers = False (sem rótulos de estrela) |
|---|---|
| incrementby = 10 (padrão) (sem rótulos de estrela) | incrementby = 5 (sem rótulos de estrela) |
|---|---|
| ispresecessionincluded = true (padrão) (ANENTE2000 = 11500) | ispresecessionincluded = False (ANENSE2000 = 11500) |
|---|---|
| maxmagnitudeFilter = Nenhum (padrão) | maxmagnitudeFilter = 1 |
|---|---|
| UserDefinedStars = [] (padrão) (com apenas "Vega") | UserDefinedStars = [exalibur_star, Karaboudjan_star] (do Quickstart com "Vega") |
|---|---|
| somentedisplayuserstars = false (padrão) com userdefinedstars | somentedisplayuserstars = true com userDefinedStars = [exalibur_star, karaboudjan_star] (do quickstart) |
|---|---|
| fig_plot_title = (padrão) | fig_plot_title = "Este é um título de exemplo para um gráfico de estrelas" |
|---|---|
| fig_plot_color = "c0" (padrão) (sem rótulos de estrela) | fig_plot_color = "Darkorchid" (sem rótulos de estrela) |
|---|---|
FinalPositionofstars ()
Retorna um dicionário para as posições finais das estrelas para um ano específico no formato: {'Nome da estrela': {"declinação": declinação (int), "ra": ra (str)}
finalPositionOfStars(builtInStars=[],
yearSince2000=0,
isPrecessionIncluded=True,
userDefinedStars=[],
onlyDisplayUserStars=False,
declination_min=None,
declination_max=None,
save_to_csv=None)
StarPosioSoverTime ()
Retorna a posição de uma única estrela ao longo do tempo
starPositionOverTime(builtInStarName=None,
newStar=None,
startYearSince2000=None,
endYearSince2000=None,
incrementYear=5,
isPrecessionIncluded=True,
save_to_csv=None)
Vega5 anosPredictpolestar
Retorne a estrela do Polo Norte/Sul para um determinado ano desde 2000
predictPoleStar(yearSince2000=0, northOrSouth="North")
North = 90 ° e South = -90 °, Padrões para North PlotstarPositionOverTime ()
Traçar a declinação de uma estrela e a posição de ascensão direita ao longo do tempo
plotStarPositionOverTime(builtInStarName=None,
newStar=None,
startYearSince2000=None,
endYearSince2000=None,
incrementYear=10,
isPrecessionIncluded=True,
DecOrRA="D",
showPlot=True,
showYearMarker=True,
fig_plot_title=None,
fig_plot_color="C0",
figsize_n=12,
figsize_dpi=100,
save_plot_name=None)
VegaD ou ASCENSÃO DIREITA RA , Padrões para D10 anos<STAR NAME> <DECLINATION/RA> (<With/Without> Precession) from <START BCE/CE> to <END BCE/CE>, every <YEAR INCREMENT> YearsC0 plota12100Declinação com precessão:
star_chart_spherical_projection . plotStarPositionOverTime ( builtInStarName = "Vega" ,
newStar = None ,
startYearSince2000 = - 15000 ,
endYearSince2000 = 15000 ,
isPrecessionIncluded = True ,
incrementYear = 5 ,
DecOrRA = "D" )Declinação sem precessão:
star_chart_spherical_projection . plotStarPositionOverTime ( builtInStarName = "Vega" ,
newStar = None ,
startYearSince2000 = - 15000 ,
endYearSince2000 = 15000 ,
isPrecessionIncluded = False ,
incrementYear = 5 ,
DecOrRA = "D" )Ascensão direita com precessão:
star_chart_spherical_projection . plotStarPositionOverTime ( builtInStarName = "Vega" ,
newStar = None ,
startYearSince2000 = - 15000 ,
endYearSince2000 = 15000 ,
isPrecessionIncluded = True ,
incrementYear = 5 ,
DecOrRA = "R" )Ascensão direita sem precessão:
star_chart_spherical_projection . plotStarPositionOverTime ( builtInStarName = "Vega" ,
newStar = None ,
startYearSince2000 = - 15000 ,
endYearSince2000 = 15000 ,
isPrecessionIncluded = False ,
incrementYear = 5 ,
DecOrRA = "R" )Gráfico de estrelas no hemisfério norte (centrado em 90 °) sem precessão
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="North",
displayStarNamesLabels=False,
yearSince2000=11500,
isPrecessionIncluded=False,
fig_plot_color="red")
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="North",
displayStarNamesLabels=True,
yearSince2000=11500,
isPrecessionIncluded=False,
fig_plot_color="red")
Gráfico de estrelas no hemisfério norte (centrado em 90 °) com precessão
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="North",
displayStarNamesLabels=False,
yearSince2000=11500,
isPrecessionIncluded=True,
fig_plot_color="red")
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="North",
displayStarNamesLabels=True,
yearSince2000=11500,
isPrecessionIncluded=True,
fig_plot_color="red")
Gráfico de estrelas no hemisfério sul (centrado em -90 °) sem precessão
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="South",
displayStarNamesLabels=False,
yearSince2000=11500,
isPrecessionIncluded=False,
fig_plot_color="cornflowerblue")
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="South",
displayStarNamesLabels=True,
yearSince2000=11500,
isPrecessionIncluded=False,
fig_plot_color="cornflowerblue")
Gráfico de estrelas no hemisfério sul (centrado em -90 °) com precessão
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="South",
displayStarNamesLabels=False,
yearSince2000=11500,
isPrecessionIncluded=True,
fig_plot_color="cornflowerblue")
star_chart_spherical_projection.plotStereographicProjection(northOrSouth="South",
displayStarNamesLabels=True,
yearSince2000=11500,
isPrecessionIncluded=True,
fig_plot_color="cornflowerblue")
Para executar ou testar contra o repo/fork star-chart-spherical-projection , um ambiente de desenvolvimento pode ser criado via conda/miniconda
Primeiro, instale o Miniconda
Em seguida, usando o environment.yml existente.yml, um novo ambiente de conda pode ser criado para executar scripts de teste contra
conda env create --file environment.yml
Depois que o ambiente for construído, ative o ambiente:
conda activate star_chart
Para executar testes novos e existentes no diretório raiz:
python -m pytest
Nomeadas estrelas especificadas por "Catálogo da IAU de nomes de estrelas" com a posição da estrela (ascensão e declinação direita), bem como o ângulo e a velocidade do movimento adequado do in-the-sky.org e na Wikipedia, onde indicado
Modelo de Precessão: Vondrák, J., et al. “Novas expressões de precessão, válidas para intervalos de longo prazo.” Astronomy & Astrophysics, vol. 534, 2011
Código de precessão adaptado ao Python 3+ do modelo de precessão de longo prazo de Vondrak Github Repo 'Vondrak')
Envie uma correção de bug, pergunta ou solicitação de recurso como um problema do github ou para [email protected]