好问题!
有两个原因导致您得到的答案与您预期的不同。
首先,天文学家目前使用的星座边界是根据 1875 年黄道恰好所在的位置确定的。此后,黄道上的“零经度”点随着地轴的进动而不断移动,因此你得到的答案会偏离几度。要真正了解 1875 坐标中的经度,您必须这样问:
import ephem
sun = ephem.Sun()
sun.compute('2011/05/04')
print "Today's coordinates:", ephem.Ecliptic(sun).lon
sun.compute('2011/05/04', epoch='1875')
print "In 1875 coordinates:", ephem.Ecliptic(sun).lon
运行此脚本时,我得到输出:
Today's coordinates: 43:02:58.8
In 1875 coordinates: 41:18:14.1
这样可以从您的结果中消除一个错误来源。请注意,PyEphemconstellation()
函数会在其星座边界表中查找天空位置之前自动将坐标转换为 1875,前提是您提供的物体作为其参数,其参数epoch
与 1875 不同。
您遇到的另一个问题是,官方星座边界标记了天空中实际的恒星群,这些恒星群构成了公羊(金牛座)、天秤座(天秤座)等的形象。碰巧的是,这些数字甚至不接近每个横跨黄道的 30°(正如您可能已经预料到的,因为您从返回的角度减去 30°?)。如果你打印出沿着黄道的每个角度的星座,你会 (a) 发现星座的宽度变化很大,并且 (b) 你会发现有 13 个而不是 12 个星座穿过黄道,因为蛇夫座的一部分位于沿着 1875 年的黄道。
以下是一些可能有用的参考资料:
http://en.wikipedia.org/wiki/Constellation#IAU_constellations
http://en.wikipedia.org/wiki/Precession