我有一个关于时代的问题。我想展示夜空作为一个超级古老的观察者会看到它或远在遥远未来的人。我应该将年份和时代设置为相同吗?
Brandon Rhodes Halley Comet示例中列出的三个场景如下。
my_star.compute(epoch='-100000')
my_star.compute(-100000',epoch='-100000')
my_star.compute('-100000')
对我来说,根据他对赤道望远镜的描述以及1066年当代观察者对第二个例子的描述,我相信我应该选择第二种选择。也就是说,将两个时代和年份设置为古代或未来年份。
halley.compute(epoch =' 1066')
这可能是无用的:它计算哈利的当前位置,但返回相对于地球轴在1066年指向的方向的坐标。除非你使用征服时代的星图集,否则这没用。halley.compute(' 1066',epoch =' 1066')
这稍微有点了:它在1066年计算了哈利的位置,并返回了那一年地球方向的坐标。这可能会帮助你想象出物体如何定位在当代观察者之上,他们认为这是英格兰国王哈罗德与威廉·巴斯加德之间即将发生的冲突中的不祥之兆。但是要在星体背景上绘制这个位置,首先必须重新计算每个恒星在1066坐标中的位置。halley.compute(' 1066')
这是你最常用的东西;你在1066年获得了哈利的位置,但是在你的星图集可能使用的2000坐标中表示。
为什么我对我的描述如此不确定是因为Ian Ridpath和Rick Pogge得到了不同的结果。这些相关结果的链接发布在github问题中。里克说他也得到了StarryNight的结果的证实。如果我错了,我不介意,我只是看到哈利的例子,我认为这是一些选择与一些人的结果冲突。
我还无法在stackoverflow上发布许多链接(或图片!),但我在https://github.com/brandon-rhodes/pyephem/issues/61的github问题中记录非常彻底。我只想非常清楚我正在寻找什么,并向您展示可能的情况。
如果您想要测试两个正在使用的IPython笔记本,请参阅github上notebooks文件夹中的第1部分:proper-motion.ipynb
和第2部分:big-dipper.ipynb
。
big-dipper.ipynb
示例中有很多代码,所以我不会在跟踪器中发布,但我很快就会在其上发布博客文章。有关所有代码和图像,请参阅上面的github问题链接!
我相信变化的时代和年在一起描绘是我想要的一个古老的观察者在他的视角中看到夜空,以及一个未来的观察者看到夜空以自己的视角。有时这很难理解,所以我绝对会喜欢这个主题的一些社区意见。
这是代码的较小部分。 big-dipper.ipynb
笔记本显示了更全面的方案。
%pylab inline
import ephem
UMa = {
'dubhe': 'αUMa', #HIP 54061
'merak': 'βUMa', #HIP 53910
'phecda':'γUMa', #HIP 58001
'megrez':'δUMa', #HIP 59774
'alioth':'εUMa', #HIP 62956
'mizar': 'ζUMa', #HIP 65378
'alcor': '80UMa',#HIP 65477
'alcaid':'ηUMa', #HIP 67301
}
def const(const,year=None,epoch='2000',title=None):
s = []
for star in const.keys():
s.append(ephem.star(star.capitalize()))
for i in range(len(s)):
if(year!=None):
s[i].compute(year,epoch=epoch)
else:
s[i].compute(epoch=epoch)
tau = 2.0 * pi
degree = tau / 360.0
hour = tau / 24.0
ra_list = [star.a_ra / hour for star in s]
dec_list = [star.a_dec / degree for star in s]
mag_array = np.array([star.mag for star in s])
size_array = (5 - mag_array) ** 1.5 * 4
scatter(ra_list,dec_list,size_array)
if(title!=None):
pyplot.title(title)
gca().xaxis.grid(True)
gca().yaxis.grid(True)
gca().invert_xaxis()
return s