古天文表示的日月五星位置

根据前文https://blog.csdn.net/weixin_42763614/article/details/83388789,有了二十八宿距星位置,就可以通过计算日月五星的赤经找出其所在的星宿位置。这里以常见的太阳冬至所在宿度和木星位置为例。

太阳位置

# 太阳位置计算
import ephem
from star import *

def rxd_calc(lamda): # 计算入宿度
	for i in range(28):
		if esbx[i].ra <= lamda < esbx[(i+1)%28].ra:
			break
		elif esbx[i].ra > esbx[(i+1)%28].ra: # 边界循环处理
			if esbx[i].ra <= lamda < 360:
				break
			if 0 <= lamda < esbx[(i+1)%28].ra:
				lamda += 360
				break
	srx = '入' + esbx[i].name + '宿'  # 所入宿
	rxd = lamda - esbx[i].ra  # 入宿度(赤道)
	return srx, rxd  # 古度表示:rxd / gdzh

def sun_position(year): # 太阳入宿度
	date0 = str(year) + '/12/1'  # ut+8 18时
	date = ephem.next_solstice(date0)  # 冬至时间
	JD = ephem.julian_date(date)
	t = (JD - 2451545) / 36525
	date = ephem.Date(JD - 2415020)
	s = ephem.Sun(date)
	L = s.ra / ephem.degree
	for star in esbx: # 获得二十八宿宿度
		appPlace(star, t)[0]
		print(star.name, star.ra)
	# 计算入宿度
	rxd, srx = rxd_calc(L)
	print(date, srx, rxd)
	return srx, rxd  # 古度表示:rxd / gdzh

# 计算-500至-1年冬至太阳所在位置
year = -500
for i in range(500):
	sun_place(year+i)

木星位置

古代曾有“岁星纪年”的说法,然而木星公转周期并非十二年,并且行星与地球同时饶太阳公转,在地球上看会表现为盈缩顺留的现象,为此古人又给出超辰的说法,但也无法解决其用于纪年的问题。而先秦史料中岁星位置与真实位置的不符合情况,也称为研究关注的对象。

# 黄经     255    285    315   345    15     45     75    105   135    165    195    225
xingci = ['星纪','玄枵','诹訾','降娄','大梁','实沈','鹑首','鹑火','鹑尾','寿星','大火','析木']

# 木星位置
def jupiter_position(year):
	date0 = str(year) + '/5/1'
	date = ephem.next_solstice(date0) # 夏至(年中)
	j.compute(date)
	jra = round(dms2deg(j.g_ra) * 15,4)
	for i in range(12):
		if 0 <= jra - (i*30-105)%360 < 30:
			print(date, jra, xingci[i],end=' ')
			break
		elif (i*30-105)%360 > (i*30-75)%360:  # 降娄(345-15)
			if (i*30-105)%360 < jra + 360 < i*30+285:
				print(date, jra, xingci[i],end=' ')
				break

# -700至-1年的木星星次
j = ephem.Jupiter()
year = -700
for i in range(700):
	jupiter_place(year+i) # 木星位置

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值