QQ登录

只需一步,快速开始

自制天文计算小软件

[复制链接]
浪淘沙 发表于 2010-9-9 01:51 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
谢谢G兄。已经下载。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 01:55 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
请问楼主,为什么软件中规定“轨道周期”与“一年长度”为正整数?
难道用小数表示不是更方便吗?或者用科学计算法也行啊。

如果你的程序中需要正整数,你也可以把输入的小数转换成整数啊。
比如一年长度,我记得是365.2422天(精度也不高,不想去翻书了),你可以化成整数的“秒”啊。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 02:07 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
本帖最后由 浪淘沙 于 2010-9-9 02:43 编辑

还有,楼主可能对一些天文名词的定义与通常人的理解不相符。

比如楼主定义的“真太阳时”与我理解的就不太一样。
比如我在东经120度(杭州),当地时间12点正,用楼主软件计算出来的“真太阳时”也正好是12点正。
但事实并非如此,因为手表上的中午12点对应的真太阳时,在一年中的每一天,都不尽相同的。

所以建议楼主把软件中的“真太阳时”改为“平太阳时”。

************************************
附:
可能是我误解了。
楼主的软件计算中,要主动输入“时差”,然后才能计算真太阳时。
而“时差”是每天都不同的,估计不是每个人都能轻易地把“当天的时差”心算出来的。
那么又如何计算真太阳时呢?
请楼主举例计算一下,东经120度整,9月9日,手表时间(北京时间)12点整,对应的“真太阳时”是多少?
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 12:00 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
再提点小建议,请楼主有空时在软件增加如下功能:

计算某月某日的太阳赤纬。
计算某月某日的“时差”。
(暂时可以不用考虑岁差、摄动)。

如果楼主的软件不提供“赤纬”与“时差”,那么使用过程中,还得另找软件来查这二个参数。
再来用楼主的软件来计算日出、日落等信息,似乎显得太繁琐了。

评分

参与人数 1牧夫币 +6 收起 理由
gohomeman1 + 6 好建议

查看全部评分

回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 12:15 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带



    我猜测G版问的不是这个问题。
估计他是想问楼主计算出来的结果与实际观测的结果有多大的误差?

编程时,使用双精度浮点数,已经可以保证很高的计算精度了(即计算过程中产生的累积误差可以忽略了。)。
当然计算的结果,不一定代表这个物理量的有效位数真的有这么多。
这与计算时所用的原理(模型)有关。
也与计算时代入的初始参数的有效位数有关。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 12:45 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
顺便问一下,楼主的计算器精度如何?比如,与《寿星万年历》比,差别有多大。
我想等大家的测试回馈后,确 ...
gohomeman1 发表于 2010-9-5 17:22



   我用一些数据测试一下,供G兄参考:
楼主的软件无法直接计算“赤纬”,所以我先用《寿星天文历》计算出来。
取杭州的经度120度09分(东经),纬度30度17分(北纬),
查得2010年9月9日北京时间12:00,
对应的真太阳时为12:03:08
太阳视赤纬5°22'19.27"

将上述参数代入楼主的软件,计算得到此时
太阳高度65.0776838417844(65°46'36.62")
太阳方位1.85103107567065(1°51'03.71")

使用《寿星天文历》计算出来的结果是:
高度角 65°05'04.74"
方位角   1°50'45.11"

评分

参与人数 1牧夫币 +6 收起 理由
gohomeman1 + 6 感谢提供测试资料

查看全部评分

回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-9 13:12 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
本帖最后由 wangtong 于 2010-9-9 13:32 编辑
请问楼主,为什么软件中规定“轨道周期”与“一年长度”为正整数?
难道用小数表示不是更方便吗?或者用科 ...
浪淘沙 发表于 2010-9-9 01:55



感谢您的提问。   

实际上这个计算轨道坐标功能是为我做一个3ds max动画设计的,在3ds max动画里,动画都是以帧为单位,不可能出现小数。动画是一帧一帧地播放。比如说你要做一个地球绕日运行的轨道动画,你需要设置一下动画的总帧数,这不可能是小数的。以一秒为单位当然可以,时间的单位、长度的单位可以任意。如果一帧代表一天,总帧为为365或366,误差比较大,如果一帧代表一秒,总帧数就为三千多万帧,也必须是整数,当然动画演示的效果更真实,但播放一个总帧数为三千多万帧的动画用的时间会很漫长。
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-9 13:30 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
还有,楼主可能对一些天文名词的定义与通常人的理解不相符。

比如楼主定义的“真太阳时”与我理解的就不太 ...
浪淘沙 发表于 2010-9-9 02:07



    关于术语的定义由于我不是专业天文人士,可能不太严谨,但我想不会有明显的错误吧。
是的,需要你输入时差,才能计算出真太阳时。关于这个功能,我是这样想的,已知地理位置和地主标准时,时差是你假设的。如果需要实际计算,可以查《天文普及年历》得时差。
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-9 13:39 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
再提点小建议,请楼主有空时在软件增加如下功能:

计算某月某日的太阳赤纬。
计算某月某日的“时差”。
( ...
浪淘沙 发表于 2010-9-9 12:00



    这个自然是好,但我不知如何如何根据日期计算太阳赤纬。我是把太阳赤纬、时差作为已知量来设计软件的。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 13:47 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
回复 29# wangtong


    建议还是把计算时差的公式导入到软件中吧。(公式可以到网上查找的)。
有些日期,时差还是很大的。
比如11月3日,时差有16分26秒
而2月11日,时差有负的14分12秒。
二者相差半个小时。
换句话说,
当你在某地,在2月11日看到太阳“走”到最高时(或立杆影子最短时),一看手表,时间正好是12点整。
那么在同一地,在11月3日,你看太阳走到最高时,手表时间为11点30分。
你会不会怀疑手表不准了?
这里讨论的时差,通常指“均时差”。与我们说“时区的时差”是二回事。

还有就是太阳的赤纬,也可以到网上找到相应的计算公式。(不考虑岁差,公式是比较简单的。)
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-9 13:48 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
我猜测G版问的不是这个问题。
估计他是想问楼主计算出来的结果与实际观测的结果有多大的误差?

编 ...
浪淘沙 发表于 2010-9-9 12:15



    至于计算公式我都是查阅天文书籍得到的,所有的公式也都列在帮助文件里。如果根据天文书籍里查得的公式计算有误差,那是怎么回事呢?
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 14:08 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
回复 32# wangtong


    你用的公式都是不考虑轨道本身的微小变化的。

事实上,地球的轨道根本不可能是纯椭圆(地球会受到其它星体的摄动)的,所以你计算的结果有偏差是很正常的。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-9 14:13 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
这个自然是好,但我不知如何如何根据日期计算太阳赤纬。我是把太阳赤纬、时差作为已知量来设计软件 ...
wangtong 发表于 2010-9-9 13:39



    我上百度找了个公式,略加修改,你可以用EXCEL表来实现计算。
ASIN(0.39795*COS(0.98563*(N-173)/180*PI()))*180/PI()
得到的结果就是某天的赤纬(用角度表示,不是弧度)。
其中N是变量,是距1月1日的日期间隔。比如2月1日,那么N就取31天。

原公式:http://baike.baidu.com/view/862819.htm?fr=ala0_1
因赤纬值日变化很小,一年内任何一天的赤纬角δ可用下式计算:sinδ=0.39795cos[0.98563(N-173)]。式中N为日数,自1月1日开始计算。
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-10 13:17 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
我用一些数据测试一下,供G兄参考:
楼主的软件无法直接计算“赤纬”,所以我先用《寿星天文历》计算 ...
浪淘沙 发表于 2010-9-9 12:45


我计算了一下您的例子。

太阳高度:h

太阳方位:A

地理纬度:φ;

太阳赤纬:δ;

真太阳时:t

计算公式如下:(单位为度)

h=arcsinsinφ*sinδ-cosφ*cosδ*cos15*t));

A=arccostgh*tgφ-sinδ/cosh*cosφ));

计算结果如下,怎么与您用我的软件算得不一样,我又拿操作系统自带的“计算器”算了一下,与我的是一样的。 未命名1.PNG


回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-10 13:35 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
转换成度分秒的形式为
高度角 65°04'40"
方位角 1°51'3.73"
参照你使用《寿星天文历》计算出来的结果:
高度角 65°05'04.74"
方位角   1°50'45.11"
二者的确有不到半分的误差,这样大的误差是不能容忍的。
我想求你使用《寿星天文历》再算一下:
地理纬度、太阳赤纬都不变,把真太阳时改为12点正。太阳的高度与方位角各是多少?
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-10 13:47 | 显示全部楼层 来自: 中国–天津–天津 教育网/天津大学
真太阳时为12时时,视太阳正好位于上中天的位置,这时太阳的高度角应为纬度的余角加上太阳赤纬。也就是90-30°17′+5°22′19.27″,等于65°5′19.27″,方位角应为0度。请问您的计算结果是这样的吗?
我有一点不明白的是,已知太阳赤纬与地理纬度和真太阳时,计算太阳高度和方位,这说白了只是一个坐标系的转换问题,有现成的转换公式,转换公式是不会有问题的,怎么计算出来的结果会有误差呢?
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-10 21:43 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
首先,太阳的赤纬是时刻在变的。不能说某天的赤纬是多少,只能说某一时刻的赤纬是多少。

其次,《寿星》用的是“视赤纬”,这个与“真”赤纬可能不一样。这个是考虑了“光行差”,还有“章动”等等的修正。

其三,太阳高度角还与“大气折射”修正公式(是个经验公式)有关。
太阳越低,大气折射影响越大。(这也是为什么日出时,太阳还在地平线之下,而我们已经看到了太阳的直射光的原因)。

其四,地球并非是个球,而是所谓的三轴椭球。计算时,也得作修正的。
但楼主从书上找到的公式,适用于正球体。对于扁球体,我想会有一定偏差的。

其实,二个不同的作者,开发的软件,其计算结果不完全相同,这是很正常的。
就像日食的预报一样。不同的软件得到的结果都不尽相同,不能说是哪家有错。
回复 顶~ 砸~

使用道具 举报

浪淘沙 发表于 2010-9-10 21:52 | 显示全部楼层 来自: 中国–浙江–杭州 华数宽带
我真正关心的是,楼主有兴趣时,能把软件升级一下。
输入“日期”,直接出来“日出日落、晨昏蒙影”,
输入“时刻”,直接出来“太阳高度、方位”等等信息。

而不是叫使用软件的朋友,先到别的地方查找“赤纬”、“时差”,再把查的数据代入楼主的软件,再来计算。
这样做太麻烦了。

其实,楼主的软件稍稍升级很容易的。
只要加个小算法,就可以把日期(年月日)化成数字(儒略日)。
有了“儒略日”,再用现成的公式,很容易就可以计算出“赤纬”“时差”等信息。
然后就可以计算“高度”“方位”“日出日落”了。

请楼主试试吧。
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-11 10:21 | 显示全部楼层 来自: 中国–天津–天津 中移铁通
首先,太阳的赤纬是时刻在变的。不能说某天的赤纬是多少,只能说某一时刻的赤纬是多少。

其次,《寿星》用 ...
浪淘沙 发表于 2010-9-10 21:43



    我计算的太阳高度是真太阳高度,不考虑空气折射。用我这个软件计算出太阳高度等于0度时,太阳还在地平线上方,当太阳高度在地下50分时,太阳刚好没入地平。
回复 顶~ 砸~

使用道具 举报

 楼主| wangtong 发表于 2010-9-11 10:23 | 显示全部楼层 来自: 中国–天津–天津 中移铁通
回复 39# 浪淘沙


    我可以尝试一下您的建议,不过近期是不行了,没有太多的闲暇时间。
回复 顶~ 砸~

使用道具 举报

本版积分规则

APP下載|手机版|爱牧夫天文淘宝店|牧夫天文网 ( 公安备案号21021102000967 )|网站地图|辽ICP备19018387号

GMT+8, 2024-11-24 06:06 , Processed in 0.068315 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表