Лучший способ имитировать размеры звезд в масштабе небесной сферы

Используя каталог Hipparcos, я пытаюсь создать небесную сферу. Поскольку все звезды находятся на фиксированном расстоянии от центра этой сферы, единственный способ различать расстояния и величину — это размер каждой модели звезды.

С углом параллакса п и визуальная величина м в я с каждой звезды из каталога я создал приведенный ниже код для расчета радиуса каждой звезды относительно радиуса Солнца. Я использовал этот сайт , чтобы вычислить это. Проблема в том, что некоторые звезды слишком велики, чуть ли не больше самой небесной сферы! Я пытаюсь удерживать радиус ниже определенного порога.

Здесь п находится в угловых секундах и г находится в парсеках.

г "=" 1 / п

М а б с "=" М в я с бревно 10 ( г 5 ) + 5

Т с ты р ф "=" 8540 С я + 0,865

р р е л "=" ( 5800 Т с ты р ф ) 2 ( 2,512 ) 4,83 М а б с

р С ты н "=" 2,5

р "=" р р е л р С ты н

    private void positionStar()
    {
        double radius;
        cartesianPositioningCalc();
        gameObject.transform.position = cartesianPositioning;

        // Convert Plx from milliarcseconds to arcseconds (seconds of arc)
        double PlxSOA = Plx / 1000;
        // Calculate distance from equation d=1/p
        // distance d is measured in parsecs and the parallax angle p is measured in arcseconds.
        double dPC = 1 / PlxSOA;

        double absMag = Vmag - math.log10(math.pow(dPC, 5)) + 5;

        surfaceTemperature = 8540 / (CI + 0.865);

        double relativeRadius = math.pow((5800 / surfaceTemperature), 2) * math.sqrt((math.pow(2.512, (4.83 - absMag))));
        double radiusSun = 2.5f;

        radius = relativeRadius * radiusSun;

        gameObject.transform.localScale = new Vector3((float)radius, (float)radius, (float)radius);
    }

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

Если математика неверна, пожалуйста, помогите мне, как это исправить.

Спасибо!


С немного измененной версией формулы @Mike G в их ответе ниже:

г (м) = 50 * 10 ^ {(-1,44 - м) / 5}

radius = 50 * math.pow(10, (-1.44 - Vmag) / 5);

Я смог получить этот результат:Звездное Поле

И если я не ошибаюсь, я думаю, что могу найти созвездие Большой Медведицы, смещенное немного влево от центра скриншота.

Однако после загрузки на nova.astrometry.net звезды и созвездия по-прежнему не подхватываются. Это потому, что размер звезд все еще немного неверен, или эта проблема на стороне веб-сайта?

Я могу использовать другой веб-сайт/приложение, такое как Stellarium, для перекрестной проверки, есть ли способ, которым приложение может обрабатывать входное изображение, или я пытаюсь воссоздать его, используя свое изображение в приложении?

Я сделал все возможное, чтобы преобразовать ваш компьютерный код в удобочитаемые уравнения с помощью MathJax . Пожалуйста, дважды проверьте это.
@uhoh, отлично выглядит, спасибо!
Это совершенно запутанно. В вашем вопросе речь идет о построении звезд в соответствии с их радиусом, но теперь вы, похоже, хотите изобразить их с размером, соответствующим их яркости. Они связаны лишь косвенно, а яркость вообще не связана с параллаксом.
В ответе @Mike G они говорят о том, что вместо этого гораздо проще основывать радиус звезд на видимой величине - вот почему я пошел по этому пути. Однако, если есть более простой способ включить их фактический радиус, а также сделать все звезды одинакового размера, тогда я буду исследовать его дальше. Я изменю название вопроса, чтобы иметь больше смысла
Выглядеть лучше! Я также узнаю несколько других созвездий, но они зеркально перевернуты. Также math.pow(math.E, x) == math.exp(x). Подумайте о том, чтобы добавить больше источников света, увеличить значение окружающего света или использовать излучающий материал.
@MikeG - Что касается того, как звезды зеркально перевернуты, я использовал этот веб-сайт, fmwriters.com/Visionback/Issue14/wbputtingstars.htm , чтобы преобразовать RA и DE в x, y, z. Как исправить это, чтобы правильно отображать звезды?
Декартово преобразование координат правильно для правых x, y, z. Если ваши оси правые, а ваша камера находится в центре небесной сферы, я не знаю, что не так, но инвертирование любой оси будет работать вокруг этого.

Ответы (2)

Ваша математика выглядит нормально, за исключением того факта, что 1 / параллакс - это смещенная оценка расстояния (но это можно простить, если вы используете данные, где неопределенность параллакса намного меньше, чем параллакс).

Ваша главная проблема в том, что звезды действительно имеют широкий диапазон размеров. Таким образом, если вы действительно хотите показать относительные размеры звезд, у вас есть проблема с динамическим диапазоном.

Обычный способ справиться с этим - использовать логарифмическую шкалу, так что каждое увеличение размера соответствует кратному приведенному ниже. например, сделайте ваши нанесенные радиусы пропорциональными бревно 10 р р е л .

РЕДАКТИРОВАТЬ: В ответ на измененный акцент вопроса.

Кажется, вы больше не хотите масштабировать звезды в соответствии с их фактическим радиусом, а скорее в соответствии с их яркостью. Таким образом, логарифмическое масштабирование уже обрабатывается видимой величиной (которая находится в логарифмическом масштабе).

Поэтому все, что вам нужно сделать, это решить, каков ваш наименьший и наибольший радиус, и сравнить его с самыми яркими и самыми слабыми величинами, которые вы хотите построить.

Например, если ваша самая большая звезда составляет 5 единиц, а самая маленькая - 0 единиц, а ваши пределы яркого и слабого м б р я г час т и м ф а я н т соответственно, то размер произвольной звезды величиной м является

р "=" 5 ( м м ф а я н т ) м б р я г час т м ф а я н т   .

И если вы хотите, чтобы ваши самые тусклые звезды имели размер 1, а самые яркие — 5, это изменится на

р "=" 4 ( м м ф а я н т ) м б р я г час т м ф а я н т + 1   .

Еще одной альтернативой было бы сделать площадь пропорциональной величине. Опять же, масштабирование между радиусами 5 и 1:

р 2 "=" 24 ( м м ф а я н т ) м б р я г час т м ф а я н т + 1   .

Минимальный размер должен быть отличен от нуля, а линейная функция m слишком крутая на тусклом конце.
@MikeG Ваше решение просто масштабируется как квадратный корень из потока и уменьшается в 1,6 раза для каждой величины! Минимальный размер можно установить на любой вкус, добавив константу. Шахта линейно масштабируется с величиной, как работает глаз.
По второй формуле r(0)/r(1) = 1,15 и r(5)/r(6) = 1,54.

Упражнение SDSS показывает, как оценить фактический радиус звезды. Если вы используете этот радиус, вы также должны использовать разные материалы модели для разных значений индекса цвета, поскольку яркость на единицу площади является функцией температуры. Если вы предпочитаете избегать этой сложности, основывайте радиусы звезд вашей модели только на визуальной величине. Если вы поместите звезды модели на одинаковое расстояние от наблюдателя, используйте видимую величину вместо абсолютной величины.

Предположим, что радиус вашей небесной сферы составляет 1000 единиц, и вы хотите, чтобы Сириус (видимая величина m min  = -1,45) имел видимый угловой радиус 5 миллирадиан. Тогда модельный радиус Сириуса r max будет равен 5 единицам, а звезда видимой величины m будет иметь модельный радиус

р ( м ) "=" р м а Икс × 10 ( м м я н м ) / 5 "=" 5 × 10 1,45 / 5 × 10 м / 5 "=" 2,6   е 0,46   м

Если вы также хотите установить минимальный радиус модели звезды, попробуйте r(m) = be am , где

а "=" п р м я н п р м а Икс м м а Икс м м я н б "=" р м а Икс   е а   м м я н "=" р ( 0 )

Например, чтобы получить r (6,0) = 0,5 с r (-1,45) = 5, как указано выше, вы можете использовать

р ( м ) "=" 3.2   е 0,31   м

Эти модельные радиусы далеки от реальности, но должны давать узнаваемое ночное небо. В реальной жизни радиус Солнца составляет около 2,3×10 -8 пк.

что означает m в нижнем индексе min?
@SidS Видимая величина самой яркой звезды.
Я реализовал немного измененную версию этого уравнения — результат выглядит потрясающе, однако astronomy.net по-прежнему не может обнаружить звезды и созвездия. Пожалуйста, обратитесь к редактированию, которое я внес в вопрос, для получения более подробной информации. Спасибо!
В каталоге Hipparcos есть звезды с видимой величиной от -1,4 до 8. Ваши радиусы будут от 5 до 0,06 (или 0,16 при 6-й величине). Вопреки комментарию, который вы приложили к моему ответу, ваш рецепт слишком крутой для слабых величин (и в квадрате, если вы думаете, что площадь - это то, что представляет видимую яркость), мой намного меньше. Вот почему трудно распознать созвездия, которые обычно определяются звездами с диапазоном 3-4 величины. В вашей схеме это диапазон 16-43 в спотовой зоне.
@RobJeffries Добавлен параметр минимального радиуса при сохранении r(0)/r(1) = r(5)/r(6).