微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Astropy不能在坐标之间来回

如何解决Astropy不能在坐标之间来回

我有两个来源的 icrs 坐标(SkyCoord)。使用 astropy directional_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)

解决方法

据我所知,由于这些位置在球体上,我不认为倒角应该与第一个成 180 度,并且从一个点到另一个点的位置角由一个大圆路径定义两点之间。

我发现在两极附近最容易拍摄。想象两个点,在 (0,89) 处的 p1 和 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,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)

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。