日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

已知坐标求方位角_由方位角高度角求赤经赤纬

發(fā)布時間:2024/2/28 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 已知坐标求方位角_由方位角高度角求赤经赤纬 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接天體方位角和高度角的計算 - 且聽風吟的文章 - 知乎 ,已知觀測者的位置(地理坐標(b,l)),天體的位置也已知(赤道坐標(α,δ)),可以計算在某一給定時間(utc(y-m-d,h:m:s))天體的方位角和高度角(A,h);反過來,已知觀測者位置、觀測時間、指定天空某一點(也就是給出方位角、高度角),怎么反推出該點的赤經赤緯呢?解決了這個問題,我們就能知道,像一些觀星的軟件stellarium、starchart、starwalk等軟件,是怎么告訴我們天上的星星是哪顆的。

這個問題和之前那篇文章的推導基本上是反過來的,也就是把方位角A、高度角h、觀測者緯度b,經度l和觀測時間(用來求地方恒星時)當做已知量。

先上一張圖片幫助理解推導過程,還是利用球面三角的幾個公式。

圖片來自馬文章《球面天文學》

1.地平坐標系轉到時角坐標系

同樣的在以觀測者天頂Z、北極點P、天體的位置σ三個點為球面三角形PZσ的三個點,已知PZ、Pσ、Zσ,利用球面三角知識,很容易推出(粗體斜體字是直接使用的球面三角公式):

sin(δ)=cos(90-δ)=cos(90-φ)cos(90-h)+sin(90-C)sin(90-h)cos(360-A)

=sin(φ)sin(h)+cos(φ)cos(h)cos(A)(邊的余弦公式)(1)

cos(δ)sin(t)=-cos(h)sin(A)(正弦公式)(2)

cos(δ)cos(t)=sin(90-δ)cos(t)=cos(90-h)sin(90-φ)-sin(90-h)cos(90-φ)cos(360-A)

=sin(h)cos(φ)-cos(h)sin(φ)cos(A)(第一五元素公式)(3)

由(2)(3)可推得

tan(t)=sin(A)/(cos(A)sin(φ)-cos(φ)tan(h)

由此可得到

δ=asin(sin(φ)csin(h)+cos(φ)cos(h)cos(A))

t=atan(sin(A)/(cos(A)sin(φ)-cos(φ)tan(h))

實際計算t的時候,應該使用atan2函數,傳入sin(t)和cos(t)的值,因為cos(δ)≥0,所以可以直接傳入cos(δ)sin(t)和cos(δ)cos(t)。

2.時角坐標系轉動赤道坐標系

時角坐標系和赤道坐標系的赤緯相同,只需把時角t轉成赤經α。

首先我們還是需要根據UTC時間求得格林尼治恒星時S,具體公式見上面那篇文章,S加上觀測者經度l就是地方恒星時,又地方恒星時對于任意天體的地方時角加上赤經,所以可得:

α=S+l-t

具體代碼如下:

#由方位角高度角計算赤經赤緯 from ephem import * import math #(1)構造觀測者位置變量 wpf=Observer() wpf.lat='34.179569'#緯度 wpf.lon='115.93635'#經度 wpf.elevation=40#海拔 wpf.pressure=0#壓強 wpf.date=now()#取當前時間 #wpf.date="2020/4/10 10:44:53"#時間根據需要修改 p=Venus()#金星 p.compute(wpf) #世界時轉為儒略日 def utc2jd(t):s=(Date(t)).tuple()#世界時的y=s[0]#年m=s[1]#月d=s[2]#日h=s[3]#時dh=h+s[4]/60.0+s[5]/3600.0if m <= 2:y = y - 1m = m + 12day_num=int(365.25*y) + int(30.6001*(m + 1))+ d + int(dh / 24.0 + 1720981.5)hour_num=(h + 12) % 24#儒略日從12點取jd=day_num+hour_num/24+s[4]/1440+s[5]/86400return jd #由世界時求恒星時,t是格林尼治時間,返回值是角時 def sidereal_t(t):jd=utc2jd(t)mjd=jd-2451545.0#約化儒略日Tu=mjd/36525s0=6.697374558+2400.05134*Tu+0.000025862333*Tu*Tu-0.000000001722222*Tu*Tu*Tu#格林尼治時0時的恒星時s=(Date(t)).tuple()M=s[3]+s[4]/60.0+s[5]/3600.0#格林尼治時的小時數s=s0+M*366.2422/365.2422#格林尼治恒星時時加上地方經度(單位化為小時)等于地方恒星時s=s%24return s #給出觀測者,天體,時間信息,求天體方位角高度角 def ra_dec(obs,a,h):s=sidereal_t(obs.date)#格里尼治恒星時ls=wpf.sidereal_time()ls=s+obs.lon*180/math.pi/15#地方恒星時ls=ls*15*math.pi/180#角時轉為弧度ls1=wpf.sidereal_time()sint=-math.cos(h)*math.sin(a)cost=math.cos(obs.lat)*math.sin(h)-math.cos(h)*math.sin(obs.lat)*math.cos(a)t=math.atan2(sint,cost)if t<0:t=t+2*math.pira=ls-tra1=ls1-tdec=math.asin(math.sin(obs.lat)*math.sin(h)+math.cos(obs.lat)*math.cos(h)*math.cos(a))return ra,ra1,dec #A,h= az_alt(wpf,s,t) a=p.az h=p.alt r,r1,d=ra_dec(wpf,a,h) print(degrees(p.ra),degrees(p.dec)) print(degrees(r1),degrees(d)) print(degrees(r),degrees(d))

68:21:09.6 26:30:41.2
68:21:09.6 26:30:41.2
69:01:28.0 26:30:41.2

上面是使用以金星計算的結果為例,由金星的方位角高度角反推其赤經赤緯??梢钥闯鍪褂胑phem自帶的求地方恒星時的函數,求得的赤經赤緯誤差很小,使用自己所寫的求恒星時的函數,赤經誤差在角分級別,當然,實際情況是還要考慮大氣誤差等影響。

參考:馬文章《球面天文學》

總結

以上是生活随笔為你收集整理的已知坐标求方位角_由方位角高度角求赤经赤纬的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。