标签: astronomy

太阳的位置给定时间,经度和纬度

这个问题在三年多前就被提出了.给出了答案,但是我发现解决方案存在问题.

下面的代码在R.我已经将它移植到另一种语言,但是直接在R中测试了原始代码,以确保问题不在于我的移植.

sunPosition <- function(year, month, day, hour=12, min=0, sec=0,
                    lat=46.5, long=6.5) {


  twopi <- 2 * pi
  deg2rad <- pi / 180

  # Get day of the year, e.g. Feb 1 = 32, Mar 1 = 61 on leap years
  month.days <- c(0,31,28,31,30,31,30,31,31,30,31,30)
  day <- day + cumsum(month.days)[month]
  leapdays <- year %% 4 == 0 & (year %% 400 == 0 | year %% 100 != 0) & day >= 60
  day[leapdays] <- day[leapdays] + 1

  # …
Run Code Online (Sandbox Code Playgroud)

math geometry r azimuth astronomy

82
推荐指数
5
解决办法
2万
查看次数

月球/月相算法

有没有人知道一个算法,要么计算给定日期的月相或年龄,要么找到给定年份新月/满月的日期?

谷歌搜索告诉我答案是在一些天文学书籍中,但当我只需要一页时,我真的不想买整本书.

更新:

我应该证明我对google搜索更好一点的说法.我确实找到了只在某个时间段内工作的解决方案(如1900年代); 以及基于触发器的解决方案,其计算成本将超出我的预期.

S Lott在他的Python书中有几种算法用于计算给定年份的复活节,大多数算法少于十行代码,有些算法适用于格里高利历中的所有日子.在3月份找到满月是寻找复活节的关键因素,所以我认为应该有一个不需要触发的算法,适用于格里高利历中的所有日期.

c python algorithm calendar astronomy

34
推荐指数
5
解决办法
3万
查看次数

什么算法可以让我模拟行星物理?

我有兴趣做一个"太阳系"模拟器,它可以让我模拟行星和恒星的旋转和重力.

我想能够说,模拟我们的太阳系,并以不同的速度模拟它(即,观察地球和其他行星在太阳,几年等周围绕太阳旋转).我希望能够添加行星并改变行星质量等,以了解它将如何影响系统.

有没有人有任何资源可以指出我正确的方向来编写这种模拟器?

是否有为此目的设计的现有物理引擎?

algorithm simulation physics astronomy

28
推荐指数
3
解决办法
1万
查看次数

如何计算日出/日落时间?

我想跟踪日出和日落时间.在过去的几年里,我一直在用一个用我最喜欢的编程语言的流行库编写的小程序来做这件事.过去两个月我比往常更频繁地跟踪这些时间,我偶然注意到在春分日,日出时间比前一天增加了8分钟!我知道这是不可能的,并且与NOAA相比,发现我的上升和设定时间已经关闭了几天,事实上在一年中的大部分时间里似乎已经关闭了大约一分钟.

在这一点上,我想自己实现计算.有哪些算法或公式可用于此计算?

time astronomy

23
推荐指数
3
解决办法
3万
查看次数

Star BV颜色指数与明显的RGB颜色

我正在尝试将明星的BV颜色索引转换为明显的RGB颜色.除了查找表格和颜色渐变之外,似乎没有众所周知的算法可以做到这一点.

什么是BV颜色指数?

这是天文学家为一颗恒星指定其明显颜色的数字.热星(低BV)是蓝色/紫色,冷色星(高BV)是红色的,其间有白色/橙色星.

初始算法

BV到开尔文

在此输入图像描述

var t = 4600 * ((1 / ((0.92 * bv) + 1.7)) +(1 / ((0.92 * bv) + 0.62)) );
Run Code Online (Sandbox Code Playgroud)

开尔文到xyY

如果将星型建模为黑体,则可以使用普朗克轨迹的数值近似来计算xy坐标(CIE色度)

在此输入图像描述

在此输入图像描述

在此输入图像描述

// t to xyY
var x, y = 0;

if (t>=1667 && t<=4000) {
  x = ((-0.2661239 * Math.pow(10,9)) / Math.pow(t,3)) + ((-0.2343580 * Math.pow(10,6)) / Math.pow(t,2)) + ((0.8776956 * Math.pow(10,3)) / t) + 0.179910;
} else if (t > 4000 && t <= 25000) {
  x = ((-3.0258469 …
Run Code Online (Sandbox Code Playgroud)

rgb colors astronomy dart

22
推荐指数
4
解决办法
7186
查看次数

从tzdata中提取历史性的闰秒

有没有办法从大多数Linux发行版上分发的时区数据库中提取历史性闰秒的时刻?我在python中寻找一个解决方案,但在命令行上运行的任何东西都可以.

我的用例是在gps-time(基本上是自1980年第一颗GPS卫星开启以来的秒数)和UTC或当地时间之间进行转换.UTC每隔一段时间调整一次闰秒,而gps-time会线性增加.这相当于在UTC和TAI之间进行转换.TAI也忽略了闰秒,所以TAI和gps-time应该始终以相同的偏移量进化.在工作中,我们使用gps-time作为同步全球天文观测的时间标准.

我有工作函数在gps-time和UTC之间转换,但我不得不硬编码闰秒表,我在这里(文件tzdata2013xx.tar.gz包含一个名为的文件leapseconds).每隔几年宣布新的leapsecond时,我必须手动更新此文件.我更希望从标准的tzdata中获取此信息,该信息每年通过系统更新自动更新几次.

我很确定这些信息隐藏在某些二进制文件中 /usr/share/zoneinfo/.我已经能够使用struct.unpack(man tzfile提供有关格式的一些信息)来提取它,但我从来没有完全使用它.是否有可以访问此信息的标准软件包?我知道pytz,它似乎从同一个数据库中获取标准的DST信息,但它不能提供对闰秒的访问.我也找到了tai64n,但是看看它的源代码,它只包含一个硬编码表.

编辑

灵感来自steveha的答案和pytz/tzfile.py中的一些代码,我终于得到了一个有效的解决方案(在py2.5和py2.7上测试):

from struct import unpack, calcsize
from datetime import datetime

def print_leap(tzfile = '/usr/share/zoneinfo/right/UTC'):
    with open(tzfile, 'rb') as f:
        # read header
        fmt = '>4s c 15x 6l'
        (magic, format, ttisgmtcnt, ttisstdcnt,leapcnt, timecnt,
            typecnt, charcnt) =  unpack(fmt, f.read(calcsize(fmt)))
        assert magic == 'TZif'.encode('US-ASCII'), 'Not a timezone file'
        print 'Found %i leapseconds:' % leapcnt

        # skip …
Run Code Online (Sandbox Code Playgroud)

python datetime astronomy tzinfo leap-second

20
推荐指数
1
解决办法
2424
查看次数

Objective-C日出和日落图书馆?

是否有一个Objective-C(或C)库(与核心位置兼容)可以告诉我任何给定日历日的日出和日落时间?

iphone objective-c astronomy libraries ios

19
推荐指数
3
解决办法
7401
查看次数

用Python堆叠天文图像

我觉得这会更容易,但过了一段时间我终于放弃了这个,至少在几个小时......

我想从一组游戏中时光倒流的照片中重现这个尾随的星星图像.灵感来自于: 灵感

原作者使用VirtualDub拍摄的低分辨率视频帧并与imageJ结合使用.我想我可以轻松地重现这个过程,但是使用Python更具记忆意识的方法,所以我可以使用原始的高分辨率图像来获得更好的输出.

我的算法的想法很简单,一次合并两个图像,然后通过将得到的图像与下一个图像合并来迭代.这样做了几百次并且适当地称重它,以便每个图像对最终结果具有相同的贡献.

我对python很新(我不是专业的程序员,这很明显),但环顾四周我认为Python Imaging Library是非常标准的,所以我决定使用它(如果你认为的话,请纠正我)别的东西会更好).

这是我到目前为止所拥有的:

#program to blend many images into one
import os,Image
files = os.listdir("./")
finalimage=Image.open("./"+files[0]) #add the first image
for i in range(1,len(files)): #note that this will skip files[0] but go all the way to the last file
  currentimage=Image.open("./"+files[i])
  finalimage=Image.blend(finalimage,currentimage,1/float(i+1))#alpha is 1/i+1 so when the image is a combination of i images any adition only contributes 1/i+1.
  print "\r" + str(i+1) + "/" + str(len(files)) #lousy progress indicator
finalimage.save("allblended.jpg","JPEG")
Run Code Online (Sandbox Code Playgroud)

这样做了它应该做的但是得到的图像是黑暗的,如果我只是试图增强它,很明显由于像素的值缺乏深度而导致信息丢失.(我不确定这里适当的术语是什么,颜色深度,颜色精度,像素大小).这是使用低分辨率图像的最终结果:

分辨率低的结果

或者我用4k×2k分辨率(从另一组照片中)尝试: …

python image color-depth astronomy python-imaging-library

18
推荐指数
1
解决办法
5663
查看次数

使用PyEphem计算黎明和日落时间

是否可以使用PyEphem计算黎明,黄昏和日落时间?我用PyEphem来制作白天和黑夜时间,但是我没有在日落/黄昏/黎明时找到任何东西

python astronomy pyephem

16
推荐指数
3
解决办法
1万
查看次数

如何使用Python将Gaia天体测量数据绘制成TESS图像?

长话短说:我想将盖亚天体测量数据绘制成Python中的TESS图像.这怎么可能?请参阅下面的详细说明.


我有一个64x64像素的TESS星形图像与Gaia ID 4687500098271761792.TESS天文台指南第8页称1像素约为21弧秒.使用Gaia Archive,我搜索这颗星(在顶部特征下面,点击搜索.)并提交查询以查看1000弧秒内的星星,大致是我们需要的半径.我用于搜索的名称Gaia DR2 4687500098271761792如下所示:

在此输入图像描述

提交查询,我得到一个500星的列表RADEC坐标.选择CSV并且Download results,我得到了大约4687500098271761792的星星列表.此结果文件也可以在此处找到.这是我们想要使用的Gaia的输入.

从TESS,我们有4687500098271761792_med.fits,一个图像文件.我们用以下方式绘制它

from astropy.io import fits
from astropy.wcs import WCS
import matplotlib.pyplot as plt
hdul = fits.open("4687500098271761792_med.fits")[0]
wcs = WCS(hdul.header)
fig = plt.figure(figsize=(12,12))
fig.add_subplot(111, projection=wcs)
plt.imshow(hdul.data)
Run Code Online (Sandbox Code Playgroud)

得到一个很好的照片:

在此输入图像描述

和一堆警告,其中大部分都在这里得到了解释(Q中的警告,评论中的解释).

请注意,我们使用WCS投影确实很好.为了检查,让我们只是绘制数据,hdul.data而不关心投影:

plt.imshow(hdul.data)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

几乎和以前一样,但现在轴的标签只是像素数,而不是RA和DEC,这是更好的选择.第一个图中的DECRA值分别在-72°和16°左右,这是好的,因为Gaia目录给了我们大约这些坐标的 …

python astronomy python-3.x fits astropy

13
推荐指数
1
解决办法
535
查看次数