2015-01-16 4 views
0

Я использую следующий скрипт для того, чтобы вычислить галактической центр (GC) положение в галактических координатах (в градусах) к небесным координатам:Healpy: функция ротатор дает разные результаты

import healpy as hp 
r = hp.Rotator(coord = ['G', 'C'], deg=True) 
ri = hp.Rotator(coord = ['C', 'G'], deg=True) 
gz, ga = 0., 0.   # position of GC 
gz_e, ga_e = r(gz, ga) 
print gz_e, ga_e 
zg, ag = ri(gz_e, ga_e) 
print zg, ag 

Таковы результаты Я получаю:

1.09730865695 -2.91715324734 # celestial 
0.0 -1.57079632679   # back to galactical 

Прежде всего, цифры неверны в небесной, а также в галактической системе координат. Есть вероятность, что я неправильно использую функцию (надеюсь), или что-то не так с самой функцией. Кто-нибудь знает, что происходит не так?

Во-вторых: кажется, что я получу цифры в радиане, верно?

+0

вы можете попробовать использовать все в радианах и конвертировать в конце? 'healpy' использует colatitude, поэтому центр находится под углом 90 градусов. –

+0

Немного запутанно, что значение по умолчанию deg равно True. Я установил его в False и установил gz, ga = np.pi/2., 0. Снова первая координата, по-видимому, вычисляется правильно (gz_e и zg), но вторая по-прежнему неправа (ga_e & ag): gz_e = 2.07582709512, ga_e = -1.63354890767 , zg = 1.57079632679, ag = 1.11022302489e-16 (почти очень близко к правильному значению). – user4050567

ответ

0

deg относится только к углам в rot, а не к Rotator. Rotator потребности theta (коширота) и phi (долгота) в радианах, см:

import healpy as hp 
import numpy as np 
r = hp.Rotator(coord = ['G', 'C']) 
ri = hp.Rotator(coord = ['C', 'G']) 
gz, ga = np.pi/2, 0.   # position of GC 
gz_e, ga_e = r(gz, ga) 

print("Galactic center in Celestial Coordinates") 
print(gz_e, ga_e) 
zg, ag = ri(gz_e, ga_e) 
print("Back to galactic coordinates") 
print(zg, ag) 

Выход:

Galactic center in Celestial Coordinates 
2.07582709512 -1.63354890767 
Back to galactic coordinates 
1.57079632679 -1.11022302489e-16 
Смежные вопросы