2010-02-27 19 views

Répondre

2

Peut-être que le code des projets opensource pourrait vous convenir? Récemment sur FLOSS-Weekly était une discussion sur Stellarium. Clause de non-responsabilité: Je n'ai pas regardé cette source de Stellarium donc je n'ai aucune idée si c'est utile et malheureusement il est écrit en C/C++.

1

Il existe une ancienne bibliothèque C appelée Astrolog qui peut probablement faire certaines choses que vous demandez. Vous pouvez le vérifier ici: http://www.astrolog.org/astrolog.htm

2

Ce n'est pas dans l'objectif C mais la bibliothèque incluse dans le paquet pyephem est plutôt bonne. Les fichiers source C ont été extraits de l'ancien programme Xephem X Window avec de la colle ajoutée pour rendre les fonctions disponibles depuis Python. Tant que vous n'avez pas besoin d'une très grande précision, ces routines fonctionneront probablement pour vous.

http://rhodesmill.org/pyephem/

12

Je recommande PJ Naughter de AA+ library. Il est basé sur le livre Astronomical Algorithms de Meeus. La bibliothèque est assez complète et écrite en C++ (facilement appelée depuis Objective-C). Mon application iOS Lúan utilise cette bibliothèque.

+0

J'ai téléchargé la bibliothèque AA +, mais pourriez-vous me dire comment ajouter des fichiers C++ au projet XCode iOS? J'ai essayé mais il y a des erreurs au mot-clé ** class **! – AVEbrahimi

+3

Lors de l'intégration de AA +, supprimez les tests car ils contiennent une fonction principale qui sera en conflit avec votre projet principal. Renommez les fichiers obj-c qui doivent référencer le code C++ pour se terminer par .mm au lieu de .m. Cela mettra le compilateur en mode objectif-C++ pour ce fichier. –

+0

Vous ne pouvez pas trouver le soleil et la lune se lever et se coucher est-ce exact? –

1

En plus de la réponse d'Andrew Hammond, j'utilise simplement Xcode pour télécharger l'AA. Je supprime alors tous les fichiers de test (AATest.cpp AATest.sin AATest.vcproj) et avec un avertissement par Xcode de "Implicit conversion loss integer precision" long "à" int "" dans la dernière ligne sur nYear/100

CAAEasterDetails CAAEaster::Calculate(long nYear, bool GregorianCalendar) 
{ 
    CAAEasterDetails details; 

    if (GregorianCalendar) 
    {      
    int a = nYear % 19; 
    int b = nYear/100; 

Le programme compile bien. Compilez seulement si le programme est objectif c mais pas s'il est basé sur Swift. Vous avez un problème avec la macro de pré-processeur AAPLUS_EXT_CLASS.

0

Pour ceux qui sont toujours intéressés par 2016, j'ai fait un wrapper Objective-C (++) et Swift autour de la bibliothèque AA + de PJ Naughter. Il est basé sur le livre Astronomical Algorithms de Jean Meeus et il est open source sur GitHub:

https://github.com/onekiloparsec/SwiftAA