Отображение сферической шапки на плоскость

Я не изучаю геометрию и не являюсь носителем языка, поэтому прошу прощения, если мой вопрос недостаточно ясен.

В рамках моей магистерской работы я должен нанести ограниченные области ночного неба на двумерную плоскость. Мое текущее решение состоит из прямоугольного отображения, где значения (ra, dec) отображаются в координатах (x, y). Хотя этот подход работает достаточно хорошо для небольших регионов с относительно низкими значениями восхождения, результирующие графики постепенно искажаются при более высоких значениях ||dec|| значения, как и ожидалось.

В какой-то момент мне придется изменить это на более универсальный подход. Дело в том, что я не совсем понимаю, что искать. Я предполагаю, что мне нужно иметь возможность отображать угловые координаты в квадратную (или шестиугольную) подсетку, но большинство результатов поиска, которые я получаю, связаны с отображением всей поверхности.

Я знаю, что не смогу добиться идеального изображения без искажений, но мне не нужны идеальные решения; только более общая проекция, которая будет хорошо работать вблизи полюсов. Что-то вроде этого, где я применяю свои навыки Photoshop и пытаюсь смоделировать область 20º в соответствии с моим текущим подходом и тем, который я ищу:

Что я хочу:

img

Что я имею:

img

TL;DR: как преобразовать координаты на сфере (ra/dec) в декартовы координаты в локально определенной сетке?


person António Dias    schedule 18.02.2021    source источник
comment
Извините, что просто привел ссылку. Помогает ли это ?   -  person jweyrich    schedule 18.02.2021
comment
Очень интересный вопрос, однако гораздо больше шансов получить полезные ответы на math.stackexchange.com. Тем не менее, позвольте мне задать уточняющий вопрос. Правильно ли я понимаю, что вам нужна такая сетка, чтобы видимая площадь (я думаю, это именно телесный угол) элементов сетки была равномерной? а углы элементов сетки нужно выразить как (ra, dec)? Ну, я думаю, это два вопроса. Возможная идея: может быть, вы можете получить вдохновение, глядя на проекции карты мира. Может быть, в частности, глядя на равновеликие проекции, например. Проекция Моллвейда.   -  person Robert Dodier    schedule 18.02.2021
comment
@jweyrich Я думаю, что OP немного выходит за рамки основных координат.   -  person Robert Dodier    schedule 18.02.2021
comment
x = rsin(theta)*cos(phi) y = rsin(theta)*sin(phi) z = r*cos(theta)   -  person evgeni fotia    schedule 18.02.2021
comment
@evgenifotia Эта проекция дает элементы в форме трапецеидальных искажений, которые, по словам ОП, ему не нужны.   -  person Robert Dodier    schedule 18.02.2021
comment
Спасибо всем за участие! Действительно, я хочу максимально избежать искажений площади/формы. Никакая проекция не даст мне этого, но они сохраняют более чем приемлемую точность вокруг своей центральной точки. @ Роберт Додье, спасибо за предложение! Я опубликую этот вопрос на math.stackexchange.   -  person António Dias    schedule 18.02.2021
comment
см. WebGL - отображение сферы на плоскости   -  person Spektre    schedule 19.02.2021
comment
@Spektre спасибо, это была очень полезная ссылка! Я не знаю, почему я никогда не думал о переопределении координат вокруг центра графика вместо использования глобальной проекционной рамки, поскольку это очень интуитивно понятное решение!...   -  person António Dias    schedule 20.02.2021
comment
@AntónioDias Мне потребовалось время, чтобы понять это. Результаты впечатляют, особенно на изображениях, выгравированных на стекле с ЧПУ, для которых он был разработан. Подход имеет один недостаток, хотя вы не можете отображать слишком большие объекты (покрывающие всю окружность поверхности), потому что такое преобразование приведет к перекрытию и самопересечению, особенно на поверхностях с малым радиусом кривизны. Эта геометрическая проекция относительно проста, вы не поверите, с какими сумасшедшими вещами, связанными с геометрией, я имел дело в последние годы это всего лишь верхушка айсберга   -  person Spektre    schedule 20.02.2021