天天看点

VSOP87D表、VSOP87方法准确描述的vb.net代码

Planetary Positions with VSOP87Written by User 1Last Updated: August 25, 2019, 03:05 pm (UTC)

Originally created on July 25, 2012

VSOP87 provides a method for computing the positions of the 8 planets (and the Sun) efficiently and accurately without the major headaches that astronomers from past centuries had to deal with.

文中提到关于黄道的计算方法,不容易理解。现查阅相关资料,将能够将VSOP87方法准确描述的vb.net代码提供出来,供大家参考。

' Body Name              : Earth
' VSOP87 Series Version  : C
' Coordinates Type/Epoch : Rectangular XYZ-Coordinates
'                          HELIOCENTRIC DYNAMICAL ECLIPTIC/EQUINOX OF DATE
'
' Ephemeris Date Span    : 2000 BC < Date < 6000 AD

Public Function Earth_C_X0 (ByVal t As Double) As Double
	dim X0 as double
	X0 += 0.99986069925 * cos(1.75347045757 + 6283.31966747490 * t)
	X0 += 0.02506324281 * cos(4.93819429098 + 0.24381748350 * t)
	X0 += 0.00835274807 * cos(1.71033525539 + 12566.39551746630 * t)
	...
	X0 += 0.00000000050 * cos(2.84763289309 + 60284.16619777939 * t)
	Return X0
	End Function

Public Function Earth_C_X1 (ByVal t As Double) As Double
	Dim X1 As Double
	X1 += 0.00154550744 * cos(0.64605836878 + 0.24381748350 * t)
	X1 += 0.00051503383 * cos(6.00263199393 + 12566.39551746630 * t)
	...
	X1 += 0.00000000020 * cos(2.85391796921 + 9070.36269133230 * t)
	Return X1 * t
	End Function

...
Public Function Earth_C_Z4 (ByVal t As Double) As Double
	Dim Z4 As Double
	Z4 += 0.00000000004 * cos(0.79662198849 + 6438.49624942560 * t)
	Z4 += 0.00000000005 * cos(0.84308705203 + 1047.74731175470 * t)
	Z4 += 0.00000000005 * cos(0.05711572303 + 84334.66158130829 * t)
	Z4 += 0.00000000003 * cos(3.46779895686 + 6279.55273164240 * t)
	Z4 += 0.00000000003 * cos(2.89822201212 + 6127.65545055720 * t)
	Return Z4 * t * t * t * t
End Function
Public Function Earth_C_Z5 (ByVal t As Double) As Double
	Dim Z5 As Double
	Return Z5 * t * t * t * t * t
End Function
           

因为代码较长,共有4567行,上面仅仅给出代码的头部和尾部。

但作为计算爱好和研究来讲,起一个抛砖引玉的作用。

参考文献:

Planetary Positions with VSOP87

算法系列之十八:用天文方法计算二十四节气(上)

VSOP87