Есть ли способ найти вершины пикселя в библиотеке HEALPix C? - PullRequest
0 голосов
/ 09 июня 2019

В IDL-версии HEALPix (pix2vec_nest) есть замечательная функция, которая может возвращать вектор (n, 3,4) с координатами вершин пикселя (-ов). Та же функция в версии C не делает то же самое, и, похоже, вы можете знать только координаты центра пикселя. Есть способ рассчитать координаты вершин?

Геометрия и математика этой вещи немного сложны для меня, чтобы написать генератор пикселизации HEALPix. Я попытался понять код IDL, чтобы добавить функциональность в библиотеку C, но она выглядит очень запутанно с неразборчивыми именами.

function sub_compute_vertices, z, z_nv, z_sv, phi, phi_nv, phi_sv, hdelta_phi

np = n_elements(z)
vertex = dblarr(np, 3, 4)

sth = SQRT((1.0d0-z)*(1.0d0+z))

sth_nv = sqrt((1.0d0-z_nv)*(1.0d0+z_nv))
vertex[*,*,0] = [[sth_nv*cos(phi_nv)],[sth_nv*sin(phi_nv)],[z_nv]] ; north vertex

phi_wv = phi - hdelta_phi
vertex[*,*,1] = [[sth*cos(phi_wv)],[sth*sin(phi_wv)],[z]] ; west vertex

sth_sv = sqrt((1.0d0-z_sv)*(1.0d0+z_sv))
vertex[*,*,2] = [[sth_sv*cos(phi_sv)],[sth_sv*sin(phi_sv)],[z_sv]] ; south vertex

phi_ev = phi + hdelta_phi
vertex[*,*,3] = [[sth*cos(phi_ev)],[sth*sin(phi_ev)],[z]] ; east vertex


return, vertex

этот код выглядит простым способом, но в файле "Healpix_3.50 \ src \ idl \ toolkitpix2vec_nest.pro" есть другой код, который вызывает эту функцию со всеми этими параметрами ... если у вас есть и идея ... спасибо заранее.

1 Ответ

0 голосов
/ 12 июня 2019

В библиотеке C такой функции нет. Вы можете найти его в версии Java, в версии IDL и в версии C ++ библиотеки HEALPix версии 3.50. Я использовал версию C ++, и она работает очень хорошо. Мне сложно перевести код на C из-за сложности алгоритма.

...