Astropy无法在坐标之间来回移动

2024-06-02 11:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个来源的icrs坐标(SkyCoord)。使用astropy directive_offset_by()方法,我找到了它们之间的位置角和间距。 所以,当我把这个位置角和间隔加到第一个Skycoord时,我应该得到第二个Skycoord,我做到了。 但是当我试图从第二个来源获取第一个SkyCoord时,我得到了不同的结果。
间隔应相同,但位置角应旋转180度,对吗?
我错过了一些明显的东西,但看不到什么。
我在下面举了一个最低限度的工作示例

Alpheratz = SkyCoord.from_name('Alpheratz') 
Peg = SkyCoord.from_name("Psi Pegasi") 
Pos_ang = Alpheratz.position_angle(Peg)
Sep = Alpheratz.separation(Peg)
print("Pos_ang:",Pos_ang,"Sep:", Sep)
Peg_from_A = Alpheratz.directional_offset_by(position_angle = Pos_ang, separation = Sep)
Alphe_back_from_Peg = Peg_from_A.directional_offset_by(position_angle = Pos_ang - 180*u.deg, separation = Sep)
print("Peg from name:",Peg,"\nPeg from A:", Peg_from_A)
print("Alphe from Name:", Alpheratz, "\nAlphe back from P from A", Alphe_back_from_Peg)

Tags: namefromposbypositionsepoffsetprint
1条回答
网友
1楼 · 发布于 2024-06-02 11:23:25

我理解这个问题,我不认为反角应该是180度,因为这些位置在一个球体上,从一个点到另一个点的位置角由两点之间的大圆路径定义

我发现这是在两极附近最容易想象的。想象两个点,p1在(0,89)处,p2和(45,89)处,都在磁极附近相同的磁偏角处,但在RA中相隔45度

从p1到p2的pos角度约为67度,但从p2到p1的pos角度约为292度,这与180度相差不大。这对我来说是很有意义的,当我描绘球体时,这些点靠近极点

from astropy.coordinates import SkyCoord
from astropy import units as u

p1 = SkyCoord(0, 89, unit='deg')
p2 = SkyCoord(45, 89, unit='deg')
Pos_ang = p1.position_angle(p2)
Sep = p1.separation(p2)
print("Pos_ang p1 to p2:",Pos_ang, f"({Pos_ang.degree} deg) ", "Sep:", Sep)

pos_ang_p2_to_p1 = p2.position_angle(p1)
print("Pos_ang p2 to p1:",pos_ang_p2_to_p1, f"({pos_ang_p2_to_p1.degree} deg) ", "Sep:", Sep)

p2_from_p1 = p1.directional_offset_by(position_angle = Pos_ang, separation = Sep)

p1_back_from_p2 = p2_from_p1.directional_offset_by(position_angle = Pos_ang - 180*u.deg, separation = Sep)

print("\n\np2 pos:",p2,"\np2 from p1:", p2_from_p1)
print("p1 pos:", p1, "\np1 back from p2", p1_back_from_p2)

相关问题 更多 >