Objective-C 天文库

9

我需要进行一些月升方位角和时间的计算。有没有人推荐一个好的天文库,最好是用Objective-C编写的?

6个回答

12

我推荐使用PJ Naughter的AA+库。它基于Meeus的《天文算法》书籍编写,库非常全面,并用C++编写(可以轻松从Objective-C中调用)。我的iOS应用程序Lúan就是使用这个库。


我下载了AA+库,但是你能告诉我如何将C++文件添加到XCode iOS项目中吗?我尝试过了,但是在class关键字处出现了错误! - AVEbrahimi
3
集成 AA+ 时,请删除测试,因为其中包含一个 main 函数,该函数会与您的项目主函数产生冲突。需要引用 C++ 代码的 obj-c 文件需要将扩展名从 .m 改为 .mm。这样做会将编译器置于 objective-c++ 模式下。 - Andrew Hammond
你找不到太阳和月亮的升起和落下,是吗? - Cristi Băluță
你可以使用日出/日落库。 - Andrew Hammond

2

对于仍然对2016感兴趣的人,我已经在PJ Naughter的AA+库周围制作了Objective-C(++)和Swift包装器。它基于Jean Meeus的天文算法书,并且在GitHub上是开源的:

https://github.com/onekiloparsec/SwiftAA


2
也许开源项目的代码适合你?最近在FLOSS-Weekly上有关于Stellarium的讨论。
免责声明:我没有查看过Stellarium的源代码,所以我不知道它是否有用,而且不幸的是它是用C/C++编写的。

2

虽然它不是用Objective C编写的,但包含在pyephem软件包中的库非常好。这些C源文件来自旧的X窗口xephem程序,并添加了粘合剂以使这些函数可从Python中调用。只要您不需要超高精度,这些例程可能适合您。

http://rhodesmill.org/pyephem/


1

除了Andrew Hammond的答案,我只是使用Xcode下载AA。然后我删除了所有测试文件(AATest.cpp AATest.sin AATest.vcproj),在最后一行nYear / 100上,Xcode会发出警告,“隐式转换损失整数精度‘long’到‘int’”。

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

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

程序编译通过。只有在使用Objective-C而非Swift时才会编译。出现了AAPLUS_EXT_CLASS预处理器宏的问题。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接