浪淘沙
发表于 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
再提点小建议,请楼主有空时在软件增加如下功能:
计算某月某日的太阳赤纬。
计算某月某日的“时差”。
(暂时可以不用考虑岁差、摄动)。
如果楼主的软件不提供“赤纬”与“时差”,那么使用过程中,还得另找软件来查这二个参数。
再来用楼主的软件来计算日出、日落等信息,似乎显得太繁琐了。
浪淘沙
发表于 2010-9-9 12:15
计算精度可能不会太高,我用的是C#语言的double型双精度浮点数,这是C#的各种数学函数默认的数据类 ...
wangtong 发表于 2010-9-7 13:43 http://www.astronomy.com.cn/bbs/images/common/back.gif
我猜测G版问的不是这个问题。
估计他是想问楼主计算出来的结果与实际观测的结果有多大的误差?
编程时,使用双精度浮点数,已经可以保证很高的计算精度了(即计算过程中产生的累积误差可以忽略了。)。
当然计算的结果,不一定代表这个物理量的有效位数真的有这么多。
这与计算时所用的原理(模型)有关。
也与计算时代入的初始参数的有效位数有关。
浪淘沙
发表于 2010-9-9 12:45
顺便问一下,楼主的计算器精度如何?比如,与《寿星万年历》比,差别有多大。
我想等大家的测试回馈后,确 ...
gohomeman1 发表于 2010-9-5 17:22 http://www.astronomy.com.cn/bbs/images/common/back.gif
我用一些数据测试一下,供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"
wangtong
发表于 2010-9-9 13:12
本帖最后由 wangtong 于 2010-9-9 13:32 编辑
请问楼主,为什么软件中规定“轨道周期”与“一年长度”为正整数?
难道用小数表示不是更方便吗?或者用科 ...
浪淘沙 发表于 2010-9-9 01:55 http://www.astronomy.com.cn/bbs/images/common/back.gif
感谢您的提问。
实际上这个计算轨道坐标功能是为我做一个3ds max动画设计的,在3ds max动画里,动画都是以帧为单位,不可能出现小数。动画是一帧一帧地播放。比如说你要做一个地球绕日运行的轨道动画,你需要设置一下动画的总帧数,这不可能是小数的。以一秒为单位当然可以,时间的单位、长度的单位可以任意。如果一帧代表一天,总帧为为365或366,误差比较大,如果一帧代表一秒,总帧数就为三千多万帧,也必须是整数,当然动画演示的效果更真实,但播放一个总帧数为三千多万帧的动画用的时间会很漫长。
wangtong
发表于 2010-9-9 13:30
还有,楼主可能对一些天文名词的定义与通常人的理解不相符。
比如楼主定义的“真太阳时”与我理解的就不太 ...
浪淘沙 发表于 2010-9-9 02:07 http://www.astronomy.com.cn/bbs/images/common/back.gif
关于术语的定义由于我不是专业天文人士,可能不太严谨,但我想不会有明显的错误吧。
是的,需要你输入时差,才能计算出真太阳时。关于这个功能,我是这样想的,已知地理位置和地主标准时,时差是你假设的。如果需要实际计算,可以查《天文普及年历》得时差。
wangtong
发表于 2010-9-9 13:39
再提点小建议,请楼主有空时在软件增加如下功能:
计算某月某日的太阳赤纬。
计算某月某日的“时差”。
( ...
浪淘沙 发表于 2010-9-9 12:00 http://www.astronomy.com.cn/bbs/images/common/back.gif
这个自然是好,但我不知如何如何根据日期计算太阳赤纬。我是把太阳赤纬、时差作为已知量来设计软件的。
浪淘沙
发表于 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 http://www.astronomy.com.cn/bbs/images/common/back.gif
至于计算公式我都是查阅天文书籍得到的,所有的公式也都列在帮助文件里。如果根据天文书籍里查得的公式计算有误差,那是怎么回事呢?
浪淘沙
发表于 2010-9-9 14:08
回复 32# wangtong
你用的公式都是不考虑轨道本身的微小变化的。
事实上,地球的轨道根本不可能是纯椭圆(地球会受到其它星体的摄动)的,所以你计算的结果有偏差是很正常的。
浪淘沙
发表于 2010-9-9 14:13
这个自然是好,但我不知如何如何根据日期计算太阳赤纬。我是把太阳赤纬、时差作为已知量来设计软件 ...
wangtong 发表于 2010-9-9 13:39 http://www.astronomy.com.cn/bbs/images/common/back.gif
我上百度找了个公式,略加修改,你可以用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。式中N为日数,自1月1日开始计算。
wangtong
发表于 2010-9-10 13:17
我用一些数据测试一下,供G兄参考:
楼主的软件无法直接计算“赤纬”,所以我先用《寿星天文历》计算 ...
浪淘沙 发表于 2010-9-9 12:45 http://www.astronomy.com.cn/bbs/images/common/back.gif
我计算了一下您的例子。太阳高度:h;太阳方位:A;地理纬度:φ;太阳赤纬:δ;真太阳时:t;计算公式如下:(单位为度)h=arcsin(sinφ*sinδ-cosφ*cosδ*cos(15*t));A=arccos(tgh*tgφ-sinδ/(cosh*cosφ));计算结果如下,怎么与您用我的软件算得不一样,我又拿操作系统自带的“计算器”算了一下,与我的是一样的。
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 http://www.astronomy.com.cn/bbs/images/common/back.gif
我计算的太阳高度是真太阳高度,不考虑空气折射。用我这个软件计算出太阳高度等于0度时,太阳还在地平线上方,当太阳高度在地下50分时,太阳刚好没入地平。
wangtong
发表于 2010-9-11 10:23
回复 39# 浪淘沙
我可以尝试一下您的建议,不过近期是不行了,没有太多的闲暇时间。