Original Article: AA+ v1.91
Author: naughter.com

Naughter Software Logo

AA+ Logo AA+ v1.91 Uma estrutura de classe para astronomia computacional

AA + é uma implementação C ++ para os algoritmos, conforme apresentado no livro "Algoritmos Astronômicos" de Jean Meeus. O código-fonte é fornecido com o livro, mas inclui (IMHO) uma licença restritiva, além de não ter sido atualizado para a 2ª revisão do livro, que inclui capítulos novos e interessantes, em áreas como as Luas de Saturno e os muçulmanos e calendários judaicos. Para tirar o máximo partido do meu código, você realmente precisará de uma cópia do livro. Isso pode ser comprado de Amazon ou diretamente dos editores Willman-Bell.

As áreas de exemplo abrangidas incluem as posições dos planetas, cometas, planetas menores e a Lua, cálculo dos tempos de Rising, Setting and Transit, cálculo de tempos de Equinoxes e Solstices, além de cálculo das posições das luas de Júpiter e Saturno, bem como muitos outros algoritmos apresentados no livro. Este é um dos maiores frameworks que já desenvolvi e inclui 375 mil linhas de código!

 

Direito autoral

  • Você pode incluir o código-fonte em qualquer produto (comercial, shareware, freeware ou outro) quando seu produto for lançado em forma binária.
  • Você pode modificar o código-fonte da maneira que quiser, exceto que não pode modificar os detalhes dos direitos autorais na parte superior de cada módulo.
  • Se você deseja distribuir o código-fonte com seu aplicativo, você só poderá distribuir versões lançadas pelo autor. Isto é para manter um único ponto de distribuição para o código-fonte.

 

Atualizações

v1.91 (1 de agosto de 2017)

  • Corrigido o alinhamento das tabelas de pesquisa em AAMercury.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAVenus.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAEarth.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAMars.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAJupiter.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AASaturn.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAUranus.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AANeptune.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAPluto.cpp module.
  • Corrigido o alinhamento das tabelas de pesquisa em AAMoon.cpp module.
  • As tabelas de pesquisa em AAELPMPP02.cpp agora usam consistentemente "e" em minúsculas ao declarar valores em tabelas de pesquisa.

v1.90 (30 de julho de 2017)

  • AA + agora inclui suporte completo para a teoria ELP / MPP02 (ftp://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/) Além da teoria ELP2000-82B (http://cdsweb.u-strasbg.fr/cgi-bin/qcat?VI/79/) e a teoria do ELP2000 truncada apresentada no livro de Meeus. Esta teoria é a versão mais atualizada da teoria do ELP Lunar. Inclui ajustes para os Efemérides JPL de DE405 e DE406, LLR (Lunar Laser Ranging), bem como o modelo nominal utilizado no ELP / MPP02. A teoria completa do ELP / MPP02 é implementada pelos novos arquivos AAELPMPP02.cpp / h incluídos no download do AA +. Esta nova classe em AA + para suportar ELP / MPP02 foi gerada pela máquina, analisando os arquivos ELP / MPP02 com um aplicativo C ++ personalizado para gerar o novo cabeçalho e módulos de origem. Os resultados foram verificados de forma abrangente em relação aos valores de teste ELP / MPP02 fornecidos nos arquivos ELP / MPP02. A implementação AA + baseia-se, em parte, na implementação C # da teoria em https://sourceforge.net/projects/astromony/files/ bem como uma implementação C em GAL (General Astrodynamics Library) por Paul Willmott em http://www.amsat-bda.org/GAL_Home.html. Semelhante à teoria ELP2000-82b, os resultados são retornados no equador e equinox de J2000. O código do cliente é livre para usar a classe CAAPrecession para precesse as coordenadas ao quadro de referência necessário. Por favor, note que, se você deseja compilar AA + para não puxar uma dependência no novo e grande módulo ELP / MPP02, então você pode definir o valor do préprocessador "AAPLUS_NO_ELPMPP02" em seu projeto. Com esta adição AA + é agora 27,7 Megabytes e 377 mil linhas de código-fonte C ++. O teste mostra o tempo necessário para chamar o CAAELP2000 :: EclipticRectangularCoordinatesJ2000 no meu processador Core i7 de 3.2GHz é sobre c. 1 ms enquanto a chamada ao novo método CAAELPMPP02 :: EclipticRectangularCoordinatesJ2000, incluindo o retorno dos derivativos, leva c. 5 ms. A partir do papel ELP / MPP02, a longitude e a latitude são três vezes mais precisas do que ELP200-82B e a distância é oito vezes mais precisa. Para o intervalo +1950 a +2060, há precisão relatada de 0,06 segundos de arco em longitude, 0,003 segundos de arco em latitude e 4 metros de distância..
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de junho de 2017.
  • Atualizado os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds até janeiro de 2026.
  • Removido desnecessário SECOND_2_RAD define no módulo AAELP2000.cpp.
  • Atualizou vários métodos CAAELP2000 para usar parâmetros "const".

v1.80 (15 de maio de 2017)

  • Corrigido um problema no CAAPhysicalSun :: Calcule onde o valor "eta" às vezes não seria retornado no quadrante correto. Graças a Alexandru Garofide por relatar este problema.

v1.79 (27 de abril de 2017)

  • Revisitou a correção para interpolação de valores RA na classe CAARiseTransitSet feita em 28 de março de 2009. Essa nova correção deve resolver esse problema para sempre. Obrigado a Gudni G. Sigurdsson por relatar este erro.

23 de abril de 2017

  • Atualizou a documentação para CAAPrecession :: AdjustPositionUsingMotionInSpace para esclarecer as unidades usadas. Graças a Matthew Prowse por relatar este problema.

v1.78 (19 de fevereiro de 2017)

  • Corrigido um erro nos métodos CAADynamicalTime :: UTC2TT e CAADynamicalTime :: TT2UTC onde o código usaria incorretamente BaseMJD em vez de JD ao determinar se a data está no intervalo válido de UTC. Graças a Luigi Candurro por relatar este erro.

v1.77 (18 de fevereiro de 2017)

  • Corrigido um erro de transcrição no valor DeltaT para 1 de maio de 2015. O valor correto é 67.8012 em vez de 67.8011. Graças a Luigi Candurro por relatar este erro.
  • Corrigido uma série de erros de transcrição nos valores DeltaT previstos de 2019.75 a 2025.75. Graças a Luigi Candurro por relatar esses erros.
  • CAADynamicalTime :: TT2UTC agora é implementado como TT2UT1 para intervalos de datas anteriores a 1 de janeiro de 1961 e 500 dias após o último salto em segundo (que é atualmente 1 de janeiro de 2017). Também CAADynamicalTime :: UTC2TT agora é implementado como UT12TT para intervalos de datas anteriores a 1 de janeiro de 1961 e 500 dias após o último salto em segundo lugar. Essas mudanças abordam problemas onde esses dois métodos acabariam usando um deslocamento constante entre UTC e TT para datas afastadas da época atual. Este problema foi descoberto ao calcular o aumento, o trânsito e os horários fixos para a Lua em anos de B.C.E. Graças a Luigi Candurro por solicitar esta atualização.
  • Reabasteceu o método CAADate :: SetInGregorianCalendar para usar o método AfterPapalReform.
  • A documentação agora inclui informações sobre os métodos CAADate :: AfterPapalReform. Graças a Luigi Candurro por relatar este problema.

v1.76 (12 de fevereiro de 2017)

  • Corrigido um erro de cópia e colar em CAASaturnMoons :: CalculateHelper no cálculo do valor mu para a oito lua (Iapetus). Obrigado a Cedric Foellmi por ter relatado esse problema.

v1.75 (11 de fevereiro de 2017)

  • Aplicou uma correção de erro para CAAMoon :: EclipticLatitude e CAAMoon :: RadiusVector ao longo das mesmas linhas que a correção para CAAMoon :: EclipticLongitude em fevereiro de 2009. A correção de erros deveria, de fato, ter sido aplicada nos dois métodos mais recentes. Obrigado a Jeffrey Roe por ter relatado esse problema.

v1.74 (5 de fevereiro de 2017)

v1.73 (16 de outubro de 2016)

  • Melhorou a precisão do CAASun :: ApparentEclipticLongitude quando o parâmetro bHighPrecision é verdadeiro. O código agora usa um novo método VariationGeometricEclipticLongitude que fornece um novo método de maior precisão para calcular o efeito da aberração. Isso leva em conta que a órbita da Terra ao redor do Sol não é uma órbita elíptica puramente imperturbável. Isso melhora a precisão da amostra 25.a / b do livro por algumas centenas de segundos do arco. Os resultados agora estão exatamente em sincronia com os resultados relatados no livro. Graças a "Pavel" por relatar este problema.

v1.72 (7 de julho de 2016)

v1.71 (28 de abril de 2016)

  • Corrigido um erro nos módulos AAVSOP87 onde um valor incorreto estava sendo aprovado para o parâmetro "nTableSize" para os métodos CVSOP87 :: Calculate e CVSOP87 :: Calculate_Dash. Uma verificação local dos valores da amostra VSOP87 em AATest.cpp agora coincide exatamente com os valores de teste VSOP87 publicados. Graças a "Pavel" por relatar este problema.

v1.70 (10 de abril de 2016)

  • Corrigido um erro na função GetSunRiseTransitSet no módulo AATest.cpp onde ele usou incorretamente Tempo Terrestre em vez de UTC. O erro nos tempos de aumento / trânsito / ajuste foi aproximadamente a diferença entre TT e UTC no momento do cálculo. Para os exemplos em AATest.cpp que correspondem a outubro de 2010, o DeltaT foi de 67 segundos. Uma verificação local do código AA + contra o SkyMap agora mostra que ambos retornam os mesmos tempos precisos ao minuto. Graças a "Pavel" por relatar este problema
  • Corrigido um erro na função GetMoonRiseTransitSet no módulo AATest.cpp onde ele usou incorretamente tempo terrestre em vez de UTC. O erro nos tempos de aumento / trânsito / ajuste foi aproximadamente a diferença entre TT e UTC no momento do cálculo. Para os exemplos em AATest.cpp que correspondem a outubro de 2010, o DeltaT foi de 67 segundos. Uma verificação local do código AA + contra o SkyMap agora mostra que ambos retornam os mesmos tempos precisos ao minuto. Graças a "Pavel" por relatar este problema.
  • Introdução de uma nova variável bare CAARiseTransitSetDetails :: bTransitValid. Acontece que os objetos celestiais nem sempre transitam em um dia semanal de 24 horas. O código de teste foi adicionado a AATest.cpp para exercer completamente todos os casos para as três variáveis de membros booleanos de bRiseValid, bTransitValid e bSetValid. Graças a "Pavel" por relatar este problema.

v1.69 (28 de março de 2016)

  • Corrigido dois erros de transcrição em CAAMoonNodes :: PassageThroNode. O primeiro erro foi o cálculo da variável local D4 que representava 4D nas fórmulas de Meeus enquanto o segundo erro estava no coeficiente -E * 0,0003 * sin (2D - 2M). Com estas duas correções, o tempo calculado do Exemplo 51.a do livro de Meeus está dentro de 2 segundos do valor que ele relata. Obrigado a Alejandro Krohn por solicitar esta correção de erros.

v1.68 (27 de março de 2016)

  • Atualizado CAAEclipses :: Calcule para retornar uma máscara de bits de atributos sobre o eclipse solar calculado em CAASolarEclipseDetails :: Detalhes. Esses atributos correspondem aos valores conforme discutido no livro de Meeus nas Páginas 381 e 382. Graças a "Pavel" por fornecer essa boa adição.

v1.67 (20 de março de 2016)

  • CAAPrecession :: AdjustPositionUsingUniformProperMotion agora garante que o valor de retorno esteja no intervalo normalizado para ascensão e declinação direita.
  • CAAPrecession :: AdjustPositionUsingMotionInSpace agora garante que o valor de retorno esteja no intervalo normalizado para ascensão e declinação direita.
  • CAAPrecession :: PrecessEquatorial agora garante que o valor de retorno esteja no intervalo normalizado para ascensão e declinação direita.
  • CAAPrecession :: PrecessEquatorialFK4 agora garante que o valor de retorno esteja no intervalo normalizado para ascensão e declinação direita.
  • CAAPrecession :: PrecessEcliptic agora garante que o valor de retorno esteja no intervalo normalizado para longitude etclíptica e latitude.
  • CAAPrecession :: PrecessEquatorialFK4 agora adiciona a correção Equinox à ascensão direita devolvida. Graças a "Pavel" por relatar este problema.
  • Otimizado o código em CAAPrecession :: PrecessEquatorial, CAAPrecession :: PrecessEquatorialFK4 & CAAPrecession::PrecessEcliptic.
  • Atualizou a documentação para CAAPrecession :: PrecessEquatorialFK4 para ser explícito em que sistema de coordenadas os parâmetros e o valor de retorno estão definidos. Graças a "Pavel" por relatar este problema.
  • Corrigido um erro de transcrição nas funções CAAGlobe :: RhoSinThetaPrime e CAAGlobe :: RhoCosThetaPrime. O valor 6378149 estava sendo usado em vez do valor correto 6378140. Graças a "Pavel" por relatar este problema.

v1.66 (9 March 2016)

  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de fevereiro de 2016
  • Verificou os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds estão atualizados
  • Corrigido três erros de transcrição na tabela g_MoonPerigeeApogeeCoefficients3. Graças a "Pavel" por relatar esse erro. Uma verificação local dos valores de paralaxe True Perigee de 1984 a 2026 indica que esse erro não afetou as distâncias calculadas pelo menos nesse intervalo de tempo para uma precisão de um quilômetro que está bem dentro da precisão reivindicada de 12 KM como mencionado no livro de Meeus na página 361.

v1.65 (4 de janeiro de 2016)

  • Grande limpeza e refatoração do código ELP2000-82b. A nova reimplementação deve ser mais rápida e fácil de manter em frente.
  • Detalhes atualizados dos direitos autorais

v1.64 (31 de dezembro de 2015)

  • AA + agora inclui suporte completo para a teoria ELP2000-82B (http://cdsweb.u-strasbg.fr/cgi-bin/qcat?VI/79/) Além da teoria do ELP2000 truncada apresentada no livro de Meeus. Esta teoria é usada para calcular a posição da Lua. A teoria completa do ELP2000-82b é implementada pelos novos arquivos AAELP2000.cpp / h incluídos no download do AA +. Esta nova classe em AA + para suportar ELP2000-82b foi gerada pela máquina, analisando os arquivos ELP2000-82b com um aplicativo C ++ personalizado para gerar o novo cabeçalho e módulos de origem. Os resultados foram verificados de forma abrangente contra os valores de teste ELP2000-82b fornecidos nos arquivos ELP2000-82b. A implementação AA + baseia-se, em parte, na tradução C do código fonte Fortran original incluído no ELP2000-82b, bem como na Libnova biblioteca de código aberto. À medida que a teoria ELP2000-82b retorna os resultados no equador e equinox de J2000 / FK5, eles não podem ser integrados diretamente na classe CAAMoon existente, que retorna os valores no equador e equinóx da data. O código do cliente é livre para usar a classe CAAPrecession para precesse as coordenadas ao quadro de referência necessário. Por favor, note que, se você deseja compilar AA + para não puxar uma dependência no novo e bastante grande módulo ELP2000-82b, então você pode definir o valor do préprocessador "AAPLUS_ELP2000_NO_HIGH_PRECISION" em seu projeto. Com esta adição AA + é agora 23,6 Megabytes e 330 mil linhas de código-fonte C ++.
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de outubro de 2015
  • Verificou os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds estão atualizados

v1.63 (16 de setembro de 2015)

  • AA + agora inclui suporte completo para a teoria VSOP87 (ftp://cdsarc.u-strasbg.fr/pub/cats/VI/81/) além da teoria VSOP87 truncada apresentada no livro de Meeus. Esta teoria é usada em toda a base de código AA + para calcular as posições dos planetas e do Sol. A teoria VSOP87 completa é implementada pelos novos arquivos AAVSOP * .cpp / h incluídos no download AA +. Para uma boa introdução ao VSOP87, consulte https://en.wikipedia.org/wiki/VSOP_(planets). As classes em AA + para suportar o VSOP87 foram geradas pela máquina, analisando os arquivos VSOP87 com um aplicativo C ++ personalizado para gerar o novo cabeçalho e módulos de origem. Os resultados foram verificados de forma abrangente contra os valores de teste VSOP87 fornecidos no arquivo "vsop87.chk" nos arquivos VSOP87. Cada teoria de VSOP (VSOP87, VSOP87A, VSOP87B, VSOP87C, VSOP87D e VSOP87E) para cada um dos objetos (Sol, Mercúrio, Vênus, Terra, Barycentro Terra-Lua, Marte, Júpiter, Saturno, Urano e Neptuno) são implementadas em separado módulos de cabeçalho e fonte para que os aplicativos do cliente possam decidir quais módulos incluir. A base de código AA + existente agora irá opcionalmente chamar esses novos módulos conforme necessário. Com esta adição, AA + passou de 840 Kilobytes e 16 mil linhas de biblioteca de código-fonte C ++ para 20 Megabytes e 291 mil linhas de uma biblioteca de código-fonte C ++. De uma só vez, quase dobrei a quantidade de código-fonte aberto que distribuo no meu site. Por favor, note que, se você deseja compilar AA + para não puxar uma dependência nos novos e bem amplos módulos VSOP87, então você pode definir o valor do préprocessador "AAPLUS_VSOP87_NO_HIGH_PRECISION" em seu projeto. Isso reverterá as classes AA + para apenas depender da teoria VSOP87 truncada, conforme apresentado no livro de Meeus
  • Atualizou o CAACoordinateTransformation :: MapTo0To360Range para usar a função de tempo de execução fmod C.
  • Atualizado o CAACoordinateTransformation :: MapTo0To24Range para usar a função de tempo de execução fmod C.
  • Adicionado novos métodos CAACoordinateTransformation :: MapTo0To2PIRange e MapToMinus90To90Range.
  • CAAAberration :: EclipticAberration, EarthVelocity e EquatorialAberration agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 em vez da teoria truncada como apresentada no livro de Meeus.
  • CAAEarth :: EclipticLongitude, EclipticLatitude, RadiusVector, EclipticLongitudeJ2000 e EclipticLatitudeJ2000 agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria completa de VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • CAAElliptical :: Calculate now inclui um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria VSOP87 completa e não a teoria truncada apresentada no livro de Meeus
  • CAAEquationOfTime :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria completa do VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • Todos os métodos em CAAEquinoxesAndSolstices agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria completa de VSOP87 em vez da teoria truncada, como apresentado no livro de Meeus.
  • CAAGalileanMoons :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAJupiter :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAJupiter :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAMars :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria completa do VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • CAAMercury :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAANearParabolic :: Calculate now inclui um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAANeptune :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAParabolic :: Calculate now inclui um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria VSOP87 completa e não a teoria truncada apresentada no livro de Meeus.
  • CAAPhysicalJupiter :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria VSOP87 completa e não a teoria truncada apresentada no livro de Meeus.
  • CAAPhysicalMars :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria completa de VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • Os métodos CAAPhysicalMoon :: CalculateSelenographicPositionOfSun, AltitudeOfSun, TimeOfSunrise e TimeOfSunset agora incluem um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria completa do VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • CAAPhysicalSun :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAASaturn :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se configurado como verdadeiro, significa que o código usa a teoria completa do VSOP87 em vez da teoria truncada apresentada no livro de Meeus.
  • CAASaturnMoons :: Calculate agora inclui um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • Todos os métodos no CAASun agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAUranus :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus.
  • CAAVenus :: EclipticLongitude, EclipticLatitude & RadiusVector agora incluem um parâmetro "bool bHighPrecision" que, se definido como verdadeiro, significa que o código usa a teoria VSOP87 completa, em vez da teoria truncada apresentada no livro de Meeus
  • Verificado o código compila limpa no Visual C ++ 2015.
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de julho de 2015.
  • Atualizado os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds até 1º de janeiro de 2025.

v1.62 (12 de julho de 2015)

  • Corrigido um erro no CAAElliptical :: Calcule ao calcular valores para a posição do Sol. Os valores retornados por este método são agora consistentes com aqueles retornados usando os métodos da classe CAASun, o programa planetário SkyMap e o site da JPL HORIZON. Os erros foram da ordem de 4 segundos do arco em declinação e 1,5 segundos de ascensão direita para os tempos modernos. Aproveitei também a oportunidade de otimizar o código nesse método. Com estas mudanças, os erros agora estão abaixo de 0,5 segundos de ângulo em declinação e ascensão direta. Graças a Marko Peric por relatar este erro.

v1.61 (5 de julho de 2015)

  • U1 (a longitude Saturnicêntrica do Sol) e U2 (a longitude saturnizante da Terra) são agora devolvidos no CAASaturnRings :: Calcular.
  • Corrigido um erro no cálculo de CAASaturnRingDetails :: DeltaU no método CAASaturnRings :: Calcule onde para alguns intervalos de datas o valor acabaria em mais de 180 graus. O livro indica que esse valor nunca deve ser superior a 7 graus. A questão foi relacionada à subtração de dois ângulos para obter um valor de alongamento absoluto entre os dois. Por definição, este valor nunca deve ser superior a 180 graus. O erro ocorreu entre as datas de 3 de junho de 2024 e 28 de julho de 2024 e 1º de dezembro de 2024 e 12 de fevereiro de 2025. Obrigado a Frank Vergeest por relatar esse erro.
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de abril de 2015.

14 de abril de 2015

v1.60 (29 de março de 2015)

  • Detalhes atualizados dos direitos autorais.
  • Atualizações para a documentação html para esclarecer as unidades usadas em alguns dos métodos CAACoordinateTransaction. Graças a "Forrest" por relatar esses problemas.
  • Corrigido algumas iniciais variáveis em torno do uso de modf. Obrigado a Arnaud Cueille por relatar este problema.

v1.59 (15 de fevereiro de 2015)

v1.58 (12 de novembro de 2014)

  • Detalhes atualizados dos direitos autorais.
  • Corrigido dois erros de transcrição no método CAAPrecession :: PrecessEquatorial. O termo "0,000344 * T" foi incorretamente usando "0.0000344 * T" ao calcular "sigma" e o termo "0.000139 * Tsquared" incorretamente foi usando "0,000138 * Tsquared" ao calcular "zeta". Obrigado a Erik Grosse por ter relatado esse bug. Os erros foram tão pequenos que os valores do exemplo trabalhado de 21.b do livro acabaram dando os mesmos resultados. Se um período de tempo mais longo fosse usado para o exemplo em vez dos 28 anos, os erros teriam sido mais fáceis de detectar com os termos incorretos.
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de outubro de 2014.
  • Atualizado os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds até 1º de janeiro de 2024.

v1.57 (28 de outubro de 2013)

  • Renomeou o método CAAEquinoxesAndSolstices :: SpringEquinox para NorthwardEquinox para evitar o viés do hemisfério norte no nome. Obrigado a Marius Gleeson por solicitar esta atualização.
  • Renomeou o método CAAEquinoxesAndSolstices :: AutumnEquinox para SouthwardEquinox para evitar o viés do hemisfério norte no nome. Obrigado a Marius Gleeson por solicitar esta atualização.
  • Renomeou o método CAAEquinoxesAndSolstices :: SummerSolstice para NorthernSolstice para evitar o viés do hemisfério norte no nome. Graças a Marius Gleeson por solicitar esta atualização.
  • Renomeou o método CAAEquinoxesAndSolstices :: WinterSolstice para SouthernSolstice para evitar o viés do hemisfério norte no nome. Graças a Marius Gleeson por solicitar esta atualização.
  • O método CAAEquinoxesAndSolstices :: LengthOfSpring agora leva um booleano para indicar em qual hemisfério o observador está localizado. Anteriormente, o código assumiu um viés do hemisfério norte. Obrigado a Marius Gleeson por solicitar esta atualização.
  • O método CAAEquinoxesAndSolstices :: LengthOfSummer agora leva um booleano para indicar em qual hemisfério o observador está localizado. Anteriormente, o código assumiu um viés do hemisfério norte. Graças a Marius Gleeson por solicitar esta atualização.
  • O método CAAEquinoxesAndSolstices :: LengthOfAutumn agora leva um booleano para indicar em qual hemisfério o observador está localizado. Anteriormente, o código assumiu um viés do hemisfério norte. Obrigado a Marius Gleeson por solicitar esta atualização.
  • O método CAAEquinoxesAndSolstices :: LengthOfWinter agora leva um booleano para indicar em qual hemisfério o observador está localizado. Anteriormente, o código assumiu um viés do hemisfério norte. Obrigado a Marius Gleeson por solicitar esta atualização.
  • Atualizou o aplicativo de exemplo para imprimir uma tabela de informações relacionadas aos Equinócios e Solsticios.
  • Adição de um método CAADynamicalTime :: TT2UTC que converte de TT para UTC.
  • Adição de um método CAADynamicalTime :: UTC2TT que converte de UTC para TT.
  • Adição de um método CAADynamicalTime :: TT2TAI que converte de TT para TAI.
  • Adição de um método CAADynamicalTime :: TAI2TT que converte de TAI para TT.
  • Adição de um método CAADynamicalTime :: TT2UT1 que converte de TT para UT1.
  • Adição de um método CAADynamicalTime :: UT12TT que converte de UT1 para TT.
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de setembro de 2013.
  • Adição de um método CAADynamicalTime :: UT1MinusUTC que retorna UT1 - UTC.
  • Corrigido vários avisos do compilador do GCC no AATest.cpp.

v1.56 (8 de setembro de 2013)

  • Corrigido um erro no cálculo de HeliocentricEclipticLongitude e HeliocentricEclipticLatitude em CAAParabolic :: Calcular. Obrigado a Joe Novak por ter relatado esse problema.
  • Corrigido um erro no cálculo de HeliocentricEclipticLongitude e HeliocentricEclipticLatitude em CAANearParabolic :: Calcular. Obrigado a Joe Novak por ter relatado esse problema.

v1.55 (4 de agosto de 2013)

  • Detalhes atualizados dos direitos autorais
  • Atualizado os valores DeltaT observados de http://maia.usno.navy.mil/ser7/deltat.data até 1 de abril de 2013
  • Atualizado os valores DeltaT previstos de http://maia.usno.navy.mil/ser7/deltat.preds até 1º de janeiro de 2023
  • Corrigido um erro de transcrição no terceiro coeficiente utilizado para calcular o termo L0 para a longitude eclíptica de Mercúrio. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no quinto coeficiente utilizado para calcular o termo L2 para a longitude eclíptica de Mercúrio. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no segundo coeficiente usado para calcular o termo L4 para a longitude eclíptica de Mercúrio. Obrigado a Isaac Clark por ter relatado este problema.
  • Corrigido um erro de transcrição no nono coeficiente utilizado para calcular o termo B0 para a latitude eclíptica de Mercúrio. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no terceiro coeficiente utilizado para calcular o termo B0 para a latitude eclíptica de Vênus. Obrigado a Isaac Clark por ter relatado este problema. Os testes pontuais indicam que essa alteração afetou apenas a latitude eclíptica na sexta casa decimal.
  • Corrigido um erro de transcrição no vigésimo primeiro coeficiente usado para calcular o termo L0 para a longitude eclíptica da Terra. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no décimo sexto coeficiente utilizado para calcular o termo L1 para a longitude eclíptica da Terra. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no segundo coeficiente usado para calcular o termo B2 para a latitude eclíptica de Marte. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no terceiro coeficiente usado para calcular o termo B2 para a latitude eclíptica de Marte. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no trigésimo nono coeficiente utilizado para calcular o termo L0 para a longitude eclíptica de Jupiter. Obrigado a Isaac Clark por ter relatado esse problema.
  • Corrigido um erro de transcrição no décimo sexto coeficiente usado para calcular o termo R1 para o vetor do raio eclíptico de Jupiter. Obrigado a Isaac Clark por ter relatado este problema.
  • Corrigido um erro de transcrição no vigésimo vigésimo coeficiente usado para calcular o termo B2 para a latitude eclíptica de Saturno. Obrigado a Isaac Clark por ter relatado este problema. Os testes pontuais indicam que esta alteração só afetou a latitude eclíptica na décima segunda casa decimal.
  • Corrigido um erro de transcrição no segundo coeficiente usado para calcular o termo B0 para a latitude eclíptica de Netuno. Obrigado a Isaac Clark por ter relatado este problema. Os testes pontuais indicam que essa alteração afetou apenas a latitude eclíptica na sexta casa decimal.

v1.54 (27 de outubro de 2012)

  • Corrigido um erro de inicialização de buffer na função PrintMoonPhase em AAAtest.cpp. Isso resultou em diagramas ASCII da fase da lua para não mostrar corretamente nos terminais Unix.
  • Agora tenho uma configuração da Ubuntu 12.10 VM que permite que o código seja totalmente testado em um sistema operacional Unix em andamento. Estou usando o Code :: Blocks IDE para fornecer uma experiência de desenvolvimento familiar para este veterano do Visual Studio!
  • Corrigido um erro de transcrição em CAAElementsPlanetaryOrbit :: SaturnLongitudePerihelion. O coeficiente correto para multiplicar por T deve ter sido 1.9637613 em vez de 1.19637613. No exemplo trabalhado de 31.a do livro de Meeus, ele usa a data em 24 de junho de 2065. Com este bug agora eliminado, o valor retornado agora é 94,34 graus em vez de 93,84 graus para esta data. Basicamente, o coeficiente incorreto teria retornado um valor muito pequeno em 0,77 graus para todo o século juliano após a época J2000.0 = 2000 janeiro 1.5 TD = JDE 2451545.0. Graças a Sudhakar Gumparthi por relatar este erro.

v1.53 (13 de outubro de 2012)

  • Atualizou o aplicativo de exemplo para mostrar o aumento, o trânsito e os detalhes do conjunto para a Lua e o Sol no Pólo Norte para 31 de outubro de 2012. Isso mostra que o Sol não se levanta ou se ajusta nesse dia e transita abaixo do horizonte às 11:43: 36 UTC e a Lua também não se eleva ou ajusta e transita acima do horizonte às 00:35:12 UTC. Obrigado a Michael Iverson por solicitar este cheque.
  • Necessidade removida da classe std :: string do módulo AATest.cpp.
  • Corrigido um pequeno erro de digitação nos comentários da história do AARiseTransitSet.cpp. Obrigado a Michael Iverson por relatar este problema.
  • Corrigido um erro de digitação na ortografia do Coeficiente em todo o módulo AADynamicalTime.cpp. Obrigado a Michael Iverson por relatar este problema.

v1.52 (12 de outubro de 2012)

  • Refatorou o código no CAARiseTransitSet :: Calcule.
  • Adicionado comentários à documentação para CAARiseTransitSet :: Calcule sobre o potencial para retornar tempos fora da data UTC solicitada. Obrigado a Rob Phillips por relatar este problema.

v1.51 (5 de maio de 2012)

  • Atualizou o aplicativo de exemplo para imprimir o aumento do trânsito e os horários fixos para a Lua e o Sol, bem como um gráfico ASCII da lua para o mês de abril de 2012 para a localização da Wexford, na Irlanda. Graças a Roger Dahl por fornecer esta boa adição ao AA +.

v1.50 (2 de maio de 2012)

  • Para melhorar ainda mais a precisão do método CAADynamicalTime :: DeltaT, o código agora usa uma tabela de pesquisa entre as datas de 1 de fevereiro de 1973 a 1 de abril de 2012 (para valores observados) e valores previstos de abril de 2012 a abril de 2015. Estes valores são como fornecido pelo IERS Rapid Service / Prediction Center em http://maia.usno.navy.mil/ser7/deltat.data e http://maia.usno.navy.mil/ser7/deltat.preds. Esta tabela de pesquisa, é claro, precisará manter atualizado à medida que o IERS atualizar essas informações. Conforme codificado atualmente, há uma única descontinuidade de c. Um segundo no início de abril de 2015. Neste ponto http://maia.usno.navy.mil/ser7/deltat.preds indica um valor de erro para DeltaT de aproximadamente 0,9 segundos de qualquer maneira.
  • Um novo CAADynamicalTime :: CumulativeLeapSeconds foi fornecido. Este método leva como entrada o valor Julian Day e retorna o total cumulativo de Leap segundos que foram aplicados a este ponto. Para mais informações sobre os segundos de salto, consulte http://en.wikipedia.org/wiki/Leap_second. Usando esse método agora você pode implementar o código que converte do Tempo Terrescial ao Tempo Universal Coordenado da seguinte maneira:

    Double TerrestialTime = algum cálculo usando algoritmos AA + (JD);
    double DeltaT = CAADynamicalTime::DeltaT(JD);
    Double UniversalTime1 = TerrestialTime - DeltaT / 86400.0; // A hora do evento usando a escala de tempo UT1
    Double TerrestialAtomicTime = TerrestialTime - (32.184 / 86400.0); // A hora do evento usando a escala de tempo TAI
    Double CumulativeLeapSeconds = CAADynamicalTime :: CumulativeLeapSeconds(JD);
    Tempo universal coordenado duplo = (Delta T - CumulativeLeapSeconds - 32.184) /86400.0 + UniversalTime1; // A hora do evento usando a escala de tempo UTC

v1.49 (1 de maio de 2012)

v1.48 (18 de março de 2012)

  • Detalhes atualizados dos direitos autorais.
  • Todas as tabelas globais "g_ *" são agora constantes. Obrigado a Roger Dahl por ter relatado esse problema ao compilar o AA + no ARM.

v1.47 (10 de setembro de 2011)

  • Corrigido um erro no cálculo da variável local "F" que representa o argumento de latitude da Lua no método CAAMoonPhases :: TruePhase. Obrigado a Andrew Hammond por relatar este erro.

v1.46 (8 de maio de 2011)

  • Detalhes atualizados dos direitos autorais.
  • Corrigido um problema de compilação no GCC onde size_t foi indefinido em vários métodos. Graças a Carsten A. Arnholm e Andrew Hammond por relatar este erro.
  • Método CAARiseTransitSet :: Rise atualizado para retornar informações para o objeto circumpolar ao invés de retornar bValid = false para este tipo de objeto. No caso de um objeto circumpolar, o objeto não aumenta ou se ajusta no dia em questão, mas, obviamente, trânsito em um momento específico. Esta alteração significa que você não precisa recuperar o método com um valor de declinação para obter o tempo de trânsito. Além disso, se um objeto nunca sobe ou não for definido, o método ainda retornará o tempo de trânsito, mesmo que ele ocorra abaixo do horizonte, definindo o valor bTransitAboveHorizon como falso. Observe que isso significa que o valor "Transit" agora sempre incluirá um valor válido. Também o método foi renomeado para Calcular. Obrigado a Andrew Hood por solicitar esta atualização
  • Corrigido um erro em CAAGalileanMoons :: CalculateHelper onde os termos periódicos em longitude para os quatro satélites (Sigma1 para Sigma4) não estavam sendo convertidos em radianos antes de alguns cálculos trigonométricos. Obrigado a Thomas Meyer por relatar este erro.

v1.45 (26 de novembro de 2010)

  • CAARefração :: RefractionFromApparent agora retorna um valor de refração constante para todas as altitudes abaixo de um determinado limite. Obrigado a mehrzad khoddam por solicitar esta atualização.
  • CAARefraction :: RefractionFromTrue agora retorna um valor de refração constante para todas as altitudes abaixo de um determinado limite. Obrigado a mehrzad khoddam por solicitar esta atualização.

v1.44 (4 de julho de 2010)

  • Corrigido vários avisos de compilação e erros quando o código é compilado usando C ++ Builder. Graças a Neil Bingham por relatar esses problemas.
  • Removido desnecessário "Longitude" parâmetro do método CAAParallax :: Ecliptic2Topocentric.

v1.43 (3 de julho de 2010)

  • Corrigido um erro na tabela g_MoonPerigeeApogeeCoefficients3. O termo "+ 0,013 * cos (4D - 2F)" foi incorretamente usando "+ 0,013 * cos (4D - 20F)". O erro na distância lunar devido a este erro de codificação é da ordem de 1 a 2 KM. Obrigado a Thomas Meyer por relatar este erro.
  • Corrigido um erro na tabela g_MoonPerigeeApogeeCoefficients1. O termo "D + 2M-0.0010" incorretamente foi usado com "D + 2M-0.0011". Obrigado a Thomas Meyer por relatar este erro.

v1.42 (21 de maio de 2010)

  • Corrigiu erros ortográficos em AATest.cpp para "Palomor Observatory". Graças a Leighton Paul por relatar o fato de que a mudança para v1.41 ainda estava escrita incorretamente.

v1.41 (10 de maio de 2010)

  • Detalhes atualizados dos direitos autorais.
  • Atualização menor para CAAPhysicalMoon :: CalculateTopocentric para colocar um valor em uma variável para facilitar a depuração
  • Corrigido os avisos variáveis não utilizados no AATest.cpp
  • Corrigiu erros de ortografia no AATest.cpp para "Palomor Observatory"
  • O valor CAAEllipticalObjectDetails :: AstrometricGeocenticRA agora é conhecido como AstrometricGeocentricRA. Obrigado a Scott Marley por relatar este erro de ortografia
  • O valor CAANearParabolicObjectDetails :: AstrometricGeocenticRA agora é conhecido como AstrometricGeocentricRA. Obrigado a Scott Marley por relatar este erro de ortografia
  • Removido o parâmetro Delta não utilizado do método CAANutation :: NutationInDeclination. Obrigado a Thomas Meyer por relatar este problema.

v1.40 (30 de dezembro de 2009)

  • Atualizou o aplicativo de exemplo para puxar cstdio em vez de cstdio.h. Obrigado a Hugo Mildenberger por sugerir esta atualização.
  • Corrigido vários avisos do compilador do GCC em AATest.cpp. Obrigado a Hugo Mildenberger por sugerir esta atualização.
  • O arquivo CMake "CMakeLists.txt" incluído no download foi atualizado para funcionar corretamente no Gentoo Linux. Mais uma vez graças a Hugo Mildenberger por esta atualização.

v1.39 (24 de novembro de 2009)

  • Atualizou o aplicativo de exemplo e a documentação para fornecer melhores orientações sobre como calcular os tempos de aumento, trânsito e conjunto da Lua. Obrigado a Mehmet Rauf Geden por relatar este erro.

v1.38 (3 de outubro de 2009)

  • Corrigido uma cópia e cole gremlin no método CAAEarth :: EclipticLatitude onde incorretamente usou termos de coeficiente B2, B3 e B4 para Venus. Devido à ocorrência desse erro, a magnitude do erro aumentaria à medida que a data se desviara do ano de 2000. Graças a Isaac Salzman por relatar esse erro.

v1.37 (30 de abril de 2009)

  • Corrigido um erro onde os valores M no CAARiseTransitSet :: Rise não estavam sendo restringidos entre 0 e 1. Obrigado a Matthew Yager por ter relatado esse problema.

v1.36 (28 de março de 2009)

  • Corrigido um erro no CAARiseTransitSet :: Rise onde a natureza cíclica de um valor RA não foi tida em conta durante a interpolação. Na verdade, Meeus no livro refere-se mesmo a esta questão como "Observações importantes, 2." na página 30 da segunda edição. Basicamente, quando interpolamos RA, precisamos ter cuidado para que os 3 valores sejam consistentes um com o outro quando qualquer um deles se envolve de 23H 59M 59S em torno de 0H 0M 0S. Nesse caso, a RA aumentou em 0H 0M 1S de RA ao invés de diminuir em 23H 59M 59S. Graças a Corky Corcoran e Danny Flippo por ambos terem relatado este problema.
  • Corrigido um erro no cálculo do parâmetro "H" no CAARiseTransitSet :: Aumentar ao calcular o ângulo da hora local do corpo durante o tempo de trânsito.

v1.35 (16 de março de 2009)

  • Corrigido um erro no CAAPabolólico :: Calcule (duplo JD, const CAAParabolicObjectElements & elements) no cálculo da eclíptica retangular heliocêntrica, a latitude eclíptica heliocêntrica e as coordenadas heliocêntricas de longitude eclíptica. O código utilizou incorretamente o valor "omega" em vez de "w" no cálculo do valor "u". Infelizmente, não há exemplos trabalhados no livro de Jean Meeus para esses valores particulares, resultando em meus erros de codificação. Obrigado a Jay Borseth por relatar este erro.
  • Corrigido um bug no CAANearParabolic :: Calculate (Double JD, const CAANearParabolicObjectElements & elements) no cálculo da eclíptica retangular heliocêntrica, da latitude eclíptica heliocêntrica e das coordenadas heliocêntricas de longitude eclíptica. O código utilizou incorretamente o valor "omega" em vez de "w" no cálculo do valor "u". Infelizmente, não há exemplos trabalhados no livro de Jean Meeus para esses valores particulares, resultando em meus erros de codificação. Obrigado a Jay Borseth por ter relatado esse bug.

v1.34 (12 de fevereiro de 2009)

  • Corrigido um erro aparentemente copiar e colar no CAAMoon :: EclipticLongitude. O layout do código para calcular o valor "ThisSigma" estava incorreto. Os termos envolvendo qualquer valor de M estavam sendo multiplicados por E. Isso estava incorreto, conforme documentado na parte inferior da página 338 da segunda edição do livro de Meeus. A lógica correta é a múltiplos termos que envolvem + 1M ou -1M por E e a múltiplos termos que envolvem 2M ou -2M por E * E. Com o erro corrigido, o exemplo trabalhado 47.a do livro agora dá: 133.16726428105474 graus. Este é um resultado muito mais próximo do valor relatado no livro 133.167265. O código de buggy anterior estava dando o valor de 133.16726382897039 graus para a Longitude aparente de Lunas. O erro neste exemplo é 0.001627 segundos de arco de um grau. Este valor de erro está bem dentro da precisão real relatada de 10 segundos de arco para o código, mas você esperaria que esse erro aumentasse à medida que a excentricidade da órbita terrestre aumenta. Graças a Neoklis Kyriazis por relatar esse erro.

v1.33 (7 de fevereiro de 2009)

  • Corrigido um erro aparentemente copiar e colar no CAAMoonPerigeeApogee :: TruePerigee. O layout do código para acumular o valor "Sigma" estava incorreto. Os termos envolvendo T (por exemplo, + 0,00019 * T, -0,00013 * T, etc., foram adicionar esses termos ao argumento do pecado incorretamente. Com o bug corrigido, o exemplo trabalhado 50.a do livro dá: 2447442.3543003569 JDE ou 1988, 7 de outubro, em 20h: 30m: 11.5 segundos. O código de buggy anterior estava dando o mesmo valor de 2447442.3543003569, mas este seria o caso porque T era um pequeno valor no exemplo. Você esperaria que o erro no calculado fosse maior à medida que a data se afasta da Epoch 2000.0. Obrigado a Neoklis Kyriazis por relatar este erro.
  • Otimizado o layout da estrutura MoonCoefficient1 no módulo AAMoon.cpp, criando todos os elementos inteiros em vez de duplos.
  • Otimizado o layout da estrutura PlutoCoefficient1 no módulo AAPluto.cpp, fazendo com que todos os elementos inteiros em vez de duplos.
  • Atualizou a versão estática do CAADate :: DaysInMonth para compilar limpa usando análise de código.
  • Detalhes atualizados dos direitos autorais.

v1.32 (11 de novembro de 2008)

  • Corrigido um erro no CAAElliptical :: Calculate (duplo JD, const CAAEllipticalObjectElements & elements) no cálculo da eclíptica retangular heliocêntrica, a latitude eclíptica heliocêntrica e as coordenadas heliocêntricas da longitude eclíptica. O código utilizou incorretamente o valor "omega" em vez de "w" no cálculo do valor "u". Infelizmente, não há exemplos trabalhados no livro de Jean Meeus para esses valores particulares, resultando em meus erros de codificação. Graças a Carsten A. Arnholm por relatar esse erro.

v1.31 (26 de julho de 2008)

  • Nome alterado de CAASun :: EclipticRectangularCoordinatesMeanEquinox para CAASun :: EquatorialRectangularCoordinatesMeanEquinox para se referir ao fato de que ele retorna coordenadas equatoriais em vez de coordenadas eclípticas. Obrigado a Frank Trautmann por ter relatado esse problema
  • Detalhes atualizados dos direitos autorais.
  • O arquivo zip agora é fornecido com uma solução VC 2005 em vez de um arquivo de solução VC 6.
  • Código agora compila limpa usando Análise de Código (/analyze)

v1.30 (29 de janeiro de 2007)

  • A versão estática do método CAADate :: Set foi renomeada para DateToJD para evitar qualquer confusão com os outros métodos Set. Graças ao Ing. Taras Kapuszczak por relatar este problema.
  • O método CAADate :: InGregorianCalendar agora também foi renomeado para o CAADate :: AfterPapalReform mais apropriado.
  • Reintegrou o parâmetro bGregorianCalendar para os construtores CAADate e Definir métodos.
  • Alterou o layout do parâmetro para a versão estática do CAADate :: DaysInMonth
  • Adição de um método CAADate :: InGregorianCalendar.
  • Adição de um método CAADate :: SetInGregorianCalendar methodnCalendar.
  • Implementação retrabalhada do método GregorianToJulian.
  • Implementação retrabalhada do método JulianToGregorian.

v1.29 (26 de janeiro de 2007)

  • Após um relatório de erro do Ing. Taras Kapuszczak que uma viagem de ida e volta da data 25 de janeiro de 100, conforme especificado no calendário gregoriano para o número do dia juliano e, em seguida, novamente produz a data incorreta 26 de janeiro de 100, passei algum tempo olhando os 2 algoritmos chave Meeus Julian Day . Parece que os algoritmos que convertem de uma data de Calendário para JD funcionam de acordo com datas propalativas, mas o algoritmo reverso que converte de JD para uma data de Calendário não. Desde que fiz a mudança de comportamento para suportar datas gregorianas propaladas para abordar problemas com o calendário muçulmano (e desde então descobri mais erros não resolvidos nos algoritmos do calendário muçulmano e aconselhei as pessoas a verificar minha DTime+ biblioteca, em vez disso), agora estou revertinendo essas mudanças para que os algoritmos de data agora estejam apresentados no livro de Meeus. Isso significa que as datas após 15 de outubro de 1582 são assumidas no calendário gregoriano e as datas antes são assumidas como sendo no calendário juliano. Essa alteração também significa que alguns dos métodos da classe CAADate não exigem mais o parâmetro "bool", agora extinto, para especificar qual o calendário que a data representa. Como parte do teste para este código de verificação de lançamento foi adicionado ao AATest.cpp para testar todas as datas de JD 0 (ou seja, 1 de janeiro de -4712) até uma data no futuro. Esperemos que com este código de verificação, não devamos ter mais problemas relatados com a classe CAADate. Novamente, se você preferir uma estrutura de classe de Tempo de data muito mais robusta e abrangente, não se esqueça de verificar os autores DTime+.
  • Código do construtor CAADate otimizado
  • Fornecido uma versão estática do método CAADate :: DaysInMonth ()
  • Descobriu um problema no CAADate :: JulianToGregorian. Parece que o algoritmo apresentado no livro para fazer a conversão do calendário juliano para gregoriano falha para datas julianas antes da reforma do calendário gregoriano em 1582. Mandei um e-mail para Jean Meeus para descobrir se isso é um erro no meu código ou um deficiência no algoritmo apresentado. Atualmente, o código irá afirmar nesta função se for chamado para uma data antes da reforma Gregoriana.
  • Nome alterado de CAAMoonIlluminatedFraction :: IluminatedFraction para CAAMoonIlluminatedFraction :: IlluminatedFraction. Graças ao Ing. Taras Kapuszczak por relatar este erro de digitação !.

v1.28 (25 de janeiro de 2007)

  • Corrigido um problema de conformidade menor com o GCC no AACoordinateTransformation.h para fazer com a declaração de vários métodos. Graças a Mathieu Peyrega por relatar este problema.

v1.27 (17 de janeiro de 2007)

  • Detalhes atualizados dos direitos autorais.
  • Adição de uma macro de préprocessador AAPLUS_EXT_CLASS para permitir que o código seja adicionado mais facilmente a uma DLL de extensão. Graças a Mathieu Peyrega por sugerir esta atualização.
  • Nome alterado de CAASun :: ApparentEclipticLongtitude para CAASun :: ApparentEclipticLongitude. Graças a Mathieu Peyrega por relatar este erro de digitação!.

v1.26 (29 de novembro de 2006)

  • Corrigido um erro onde CAAEclipticalElements :: Calcular e CAAEclipticalElements :: FK4B1950ToFK5J2000 retornaria o valor incorreto para a inclinação reduzida quando o valor de inclinação inicial era> 90 graus.
  • Adição de um novo módulo chamado CAANearParabolic. Esta nova classe fornece funcionalidade para órbitas que podem ser melhor modeladas como próximas parabolicas, isto é, onde a excentricidade está entre 0,98 e 1,02. O capítulo 35 no livro inclui suporte para o cálculo de órbitas Near-Parabolic, mas o código é fornecido em BASIC e o algoritmo como apresentado tem problemas convergentes quando a excentricidade é próxima de 1. Em vez disso, os algoritmos utilizados neste novo módulo são baseados no trabalho exemplos que Paul Schlyter forneceu em http://stjarnhimlen.se/comp/tutorial.html#16.

23 de outubro de 2006

  • Atualização menor para corrigir alguns links de marca de livro incorretos na documentação.

v1.25 (5 de junho de 2006)

  • Corrigido um erro no CAAElliptical :: Calculate (Double JD, EllipticalObject object) onde a correção para a nutação estava incorretamente usando a obliquidade média da eclíptica em vez do valor verdadeiro. Os resultados do programa de teste agora concordam muito mais de perto com o exemplo que Meeus fornece, que é a posição de Venus em 1992, 20 de dezembro, às 0h, Tempo Dinâmico. Eu também verifiquei as posições contra o site JPL Horizons e o acordo é muito melhor. Porque a verdadeira obliquidade da Eclíptica é definida como a obliquidade média da eclíptica mais a nutação na obliquidade, é relativamente fácil determinar a magnitude do erro que esta estava causando. Do capítulo sobre Nutation no livro, e especificamente a tabela que dá os coeficientes de coseno para a nutação em obliquidade, você pode ver que o erro do pior caso absoluto seria a soma dos valores absolutos de todos os coeficientes e teria sido c. 10 segundos de arco de grau, o que não é uma pequena quantidade !. Esse valor seria um pior caso absoluto e espero que o valor médio do erro seja muito menor (provavelmente muito menos do que um arco segundo). Enfim, o bug já foi corrigido. Obrigado a Patrick Wong por apontar esse bug bastante significativo.

18 de maio de 2006

  • Jean Meeus confirmou que definitivamente há um erro nos algoritmos do calendário muçulmano que compõem a classe CAAMoslemCalendar. Ele não é o autor original desses algoritmos, então ele não conseguiu explicar por que eles falharam por algumas datas. Conforme mencionado anteriormente, use o DTime+ aulas para evitar esse problema.

v1.24 (12 de maio de 2006)

  • Atualizou a documentação para usar o mesmo estilo do site.
  • Corrigido um erro de transcrição no terceiro coeficiente usado para calcular o termo R0 para o vetor do raio de Mercúrio. Obrigado a John Kruso por relatar este problema.
  • Corrigido um erro de transcrição no terceiro coeficiente utilizado para calcular o termo R1 para o vetor do raio de Mercúrio. Obrigado a John Kruso por relatar este problema.
  • Detalhes atualizados dos direitos autorais.

1 de maio de 2006

  • Ao testar v3.01 de DTime+ Descobri alguns erros na classe CAAMoslemCalendar. Especificamente, testando algumas datas, criando uma data muçulmana, depois convertendo-se em uma data juliana e depois voltando ao calendário muçulmano, destacaram algumas datas que falham neste teste de ida e volta. Se você é sério sobre o desenvolvimento do calendário muçulmano, use o apoio do calendário muçulmano em DTime+ que usa um algoritmo independente para o calendário muçulmano que não possui esse problema. Vou denunciar esta questão a Jean Meeus e possivelmente ter uma solução para ela na próxima atualização para AA +.

v1.23 (16 de novembro de 2005)

  • Corrigido um erro de transcrição no segundo coeficiente usado para calcular a longitude de Mercúrio. Graças a "Maurizio" por relatar este erro.

v1.22 (5 de julho de 2005)

  • Corrija um bug para garantir que os valores retornados de CAAEquationOfTime :: Calculate não retornem descontinuidades. Em vez disso, ele agora retorna valores negativos quando necessário.

v1.21 (3 de junho de 2005)

  • Atualização menor para "CMakeLists.txt" arquivo para corrigir um problema de maiúsculas e minúsculas. Obrigado a Andrew Maclean por relatar este problema.

v1.20 (2 de junho de 2005)

  • Parece que o problema de sensibilidade do caso corrigido na v1.17 não foi corrigido porque esqueci de atualizar os arquivos no download zip. Obrigado a Andrew Maclean por ter relatado este problema.
  • Um arquivo "CMakeLists.txt" agora está incluído no download. Este arquivo é usado pelo CMake, que é um gerador de makefile de várias plataformas. Isso permite que o código AA + seja facilmente compilado no Cygwin, Linux e os compiladores MSVC usuais. Graças a Andrew Maclean por esta ótima adição.
  • Algumas das funções da classe "CAACoordinateTransformation" foram criados em linha para melhorar o desempenho.
  • Realizou todas as estruturas utilizadas pelas classes AA +. Esta é uma questão pequena e limpa mais do que qualquer coisa. Também assegurou que todos os membros da classe sejam inicializados com padrões saudáveis.

v1.19 (13 de maio de 2005)

  • Corrigir para o CAADate :: Set (Double JD, bool bGregorianCalendar) não configurando corretamente a variável do membro m_bGregorianCalendar.

v1.18 (21 de abril de 2005)

  • Renomeado "AAAberation.cpp" para "AAAberration.cpp" de modo que todos os nomes de arquivos de código-fonte correspondam aos arquivos de cabeçalho correspondentes. Graças a J�rgen Schuck por sugerir esta atualização.

v1.17 (1 de fevereiro de 2005)

  • Corrigido um problema de sensibilidade de maiúsculas e minúsculas (pelo menos em sistemas Unix) relacionado aos arquivos stdafx.h / cpp. Agora, o nome do arquivo é em minúscula. Obrigado a Mika Heiskanen por relatar este problema.
  • Altere o pedido de itens em stdafx.h para que você obtenha uma compilação limpa no gcc. Obrigado a Mika Heiskanen por relatar este problema.
  • Corrigido um problema com a declaração da variável "Index" na função CAADynamicalTime :: DeltaT. Obrigado a Mika Heiskanen por relatar este problema.
  • Uso removido do MFC do aplicativo de exemplo, pois não é necessário.
  • Verificou a construção do código no GCC com o uso de Cygwin's porto de GCC.

v1.16 (31 de janeiro de 2005)

  • Corrigido um erro no CAAParabolic :: Calcule onde o valor JD estava sendo usado incorretamente no loop. Obrigado a Mika Heiskanen por relatar este problema.
  • Corrigido um aviso do GCC no CAADynamicalTime :: DeltaT. Obrigado a Mika Heiskanen por relatar este problema.
  • Corrigido um erro de compilador GCC relacionado à falta incluir para memset em AAEclipses.cpp. Obrigado a Mika Heiskanen por relatar este problema.

v1.15 (30 de janeiro de 2005)

  • Substituiu todo o uso do BOOL com o bool para auxiliar na compatibilidade do compilador cruzado. Isso também significa que todas as ocorrências de TRUE e FALSE são substituídas por true e false, respectivamente. Obrigado a Mika Heiskanen por ter relatado este problema.
  • O arquivo de cabeçalho cmath agora é usado em vez de math.h. Além disso, se agora não usar o texto da mensagem #pragma com base em uma definição que seja especifica do MS C. Mais uma vez, graças a Mika Heiskanen por relatar este problema.
  • Agora, usa asssert em vez do ASSERT específico do MFC. Mais uma vez, graças a Mika Heiskanen por relatar este problema.
  • Adição de um novo arquivo de cabeçalho global "AA+.h" que permite que você inclua toda a estrutura AA + através de um cabeçalho.
  • Código agora use static_cast's em vez de moldes antigos de estilo C. Mais uma vez, graças a Mika Heiskanen por relatar este problema.
  • Otimizado parte do código em assert's que evitam as variáveis não inicializadas quando são criadas no modo de lançamento. Mais uma vez, graças a Mika Heiskanen por relatar este problema.

v1.14 (21 de janeiro de 2005)

  • Corrigido um pequeno mas importante erro na função PhaseAngle (r, R, Delta). O código estava produzindo resultados incorretos e aumentava os erros de DOMÍNIO do acos e as exceções de ponto flutuante ao calcular ângulos de fase para os planetas internos. Graças a MICHAEL R. MEYER por relatar este problema.

v1.13 (31 de dezembro de 2004)

  • Reparo para CAAElliptical :: MinorPlanetMagnitude onde o ângulo de fase estava sendo convertido incorretamente de Radians para Degress quando já estava em graus. Obrigado a Martin Burri por ter relatado esse problema.

v1.12 (10 de novembro de 2004)

  • Fix para CAADate :: Get para que ele funcione corretamente para datas de calendário propalactivas. A implementação de Meeus assume automaticamente que o calendário gregoriano entrou em vigor em 15 de outubro de 1582 (JD: 2299161), enquanto a implementação do CAADate tem um "m_bGregorianCalendar" valor para decidir se a data foi especificada nos calendários gregoriano ou juliano. Esta diferença significa que o CAADate suporta totalmente versões propalativas de ambos os sistemas de calendário. Este problema foi descoberto ao testar o código do calendário muçulmano que envolve uma viagem de ida e volta entre os muçulmanos -> Julian -> Calendários Gregorianos.

v1.11 (15 de outubro de 2004)

  • A variável bValid agora está configurada corretamente no CAARiseTransitSet :: Rise se os objetos realmente aumentam e configuram.

v1.10 (17 de setembro de 2004)

  • Corrigido uma série de avisos no código quando compilado em VC .Net 2003 com o "Conformidade da força em For Loop Scope" a opção do compilador está configurada.

6 de setembro de 2004

  • Atualização menor para a documentação.

6 de setembro de 2004

  • Atualização menor para a documentação mais uma verificação ortográfica completa!!

v1.09 (15 de junho de 2004)

  • Corrigido um erro de digitação no cálculo do SunLongDash em CAAPhysicalSun :: Calcular. Obrigado a Brian Orme por detectar esse problema.

v1.08 (31 de maio de 2004)

  • Adicionado um coeficiente faltante para g_L1JupiterCoefficients arrau como usado por CAAJupiter :: EclipticLongitude. Obrigado a Brian Orme por ter relatado esse problema.
  • Adicionado g_B5JupiterCoefficients faltante [] no CAAJupiter :: EclipticLatitude. Mais uma vez, graças a Brian Orme por relatar este problema.
  • Em CAASaturn :: EclipticLongitude, o g_L5SaturnCoefficients [] não foi incluído. Obrigado a Brian Orme por ter relatado esse problema.
  • Em CAASaturn :: EclipticLatitude o g_B5SaturnCoefficients [] não foram incluídos. Obrigado a Brian Orme por ter relatado esse problema.
  • No CAASaturn :: RadiusVector os g_R5SaturnCoefficients [] não foram incluídos. Obrigado a Brian Orme por ter relatado esse problema.

v1.07 (24 de maio de 2004)

  • Corrigido uma declaração de interrupção faltando no CAAElliptical :: Calcular. Graças a Carsten A. Arnholm por relatar esse erro.
  • Também corrigiu um problema com o cálculo da distância aparente ao Sol.

27 de abril de 2004

  • Atualização menor para a documentação que descreve CAAElliptical :: MeanMotionFromSemiMajorAxis

V1.06 (22 de fevereiro de 2004)

  • O cálculo de semi-durações para eclipses em CAAEclipses agora é calculado apenas quando necessário

V1.05 (22 de fevereiro de 2004)

  • Corrigido um erro no cálculo do tipo de fase do valor k em CAAMoonPhases :: TruePhase.

V1.04 (21 de fevereiro de 2004)

  • A libração óptica em longitude para a lua agora é retornada no intervalo -180 - 180 graus

V1.03 (14 de fevereiro de 2004)

  • Fixed a "minus zero" Corrigido um erro "menos zero" na função CAACoordinateTransformation :: DMSToDegrees. O sinal do valor agora é assumido explicitamente a partir do novo parâmetro BPositive booleano. Obrigado a Patrick Wallace por ter relatado esse problema.

V1.02 (9 de fevereiro de 2004)

  • Substituiu todas as chamadas à macro "INT" com a função CAADate :: INT qual é o que deveria ter sido. A única classe afetada para isso foi CAAMoslemCalendar.
  • Corrigido uma série de avisos de nível 4 na classe CAAStellarMagnitudes quando o código é compilado no VC.Net 2003.

V1.01 (9 de fevereiro de 2004)

  • Atualizou os valores utilizados no cálculo das constantes a1 e a2 para a lua Rhea da Saturno (satélite V) seguindo um e-mail de Jean Meeus confirmando que essas constantes são de fato incorretas, conforme publicado no livro

v1.0 (6 de fevereiro de 2004)

  • Lançamento público inicial.