Используя каталог Hipparcos, я пытаюсь создать небесную сферу. Поскольку все звезды находятся на фиксированном расстоянии от центра этой сферы, единственный способ различать расстояния и величину — это размер каждой модели звезды.
С углом параллакса и визуальная величина каждой звезды из каталога я создал приведенный ниже код для расчета радиуса каждой звезды относительно радиуса Солнца. Я использовал этот сайт , чтобы вычислить это. Проблема в том, что некоторые звезды слишком велики, чуть ли не больше самой небесной сферы! Я пытаюсь удерживать радиус ниже определенного порога.
Здесь находится в угловых секундах и находится в парсеках.
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 в их ответе ниже:
radius = 50 * math.pow(10, (-1.44 - Vmag) / 5);
Я смог получить этот результат:
И если я не ошибаюсь, я думаю, что могу найти созвездие Большой Медведицы, смещенное немного влево от центра скриншота.
Однако после загрузки на nova.astrometry.net звезды и созвездия по-прежнему не подхватываются. Это потому, что размер звезд все еще немного неверен, или эта проблема на стороне веб-сайта?
Я могу использовать другой веб-сайт/приложение, такое как Stellarium, для перекрестной проверки, есть ли способ, которым приложение может обрабатывать входное изображение, или я пытаюсь воссоздать его, используя свое изображение в приложении?
Ваша математика выглядит нормально, за исключением того факта, что параллакс - это смещенная оценка расстояния (но это можно простить, если вы используете данные, где неопределенность параллакса намного меньше, чем параллакс).
Ваша главная проблема в том, что звезды действительно имеют широкий диапазон размеров. Таким образом, если вы действительно хотите показать относительные размеры звезд, у вас есть проблема с динамическим диапазоном.
Обычный способ справиться с этим - использовать логарифмическую шкалу, так что каждое увеличение размера соответствует кратному приведенному ниже. например, сделайте ваши нанесенные радиусы пропорциональными .
РЕДАКТИРОВАТЬ: В ответ на измененный акцент вопроса.
Кажется, вы больше не хотите масштабировать звезды в соответствии с их фактическим радиусом, а скорее в соответствии с их яркостью. Таким образом, логарифмическое масштабирование уже обрабатывается видимой величиной (которая находится в логарифмическом масштабе).
Поэтому все, что вам нужно сделать, это решить, каков ваш наименьший и наибольший радиус, и сравнить его с самыми яркими и самыми слабыми величинами, которые вы хотите построить.
Например, если ваша самая большая звезда составляет 5 единиц, а самая маленькая - 0 единиц, а ваши пределы яркого и слабого и соответственно, то размер произвольной звезды величиной является
И если вы хотите, чтобы ваши самые тусклые звезды имели размер 1, а самые яркие — 5, это изменится на
Еще одной альтернативой было бы сделать площадь пропорциональной величине. Опять же, масштабирование между радиусами 5 и 1:
Упражнение SDSS показывает, как оценить фактический радиус звезды. Если вы используете этот радиус, вы также должны использовать разные материалы модели для разных значений индекса цвета, поскольку яркость на единицу площади является функцией температуры. Если вы предпочитаете избегать этой сложности, основывайте радиусы звезд вашей модели только на визуальной величине. Если вы поместите звезды модели на одинаковое расстояние от наблюдателя, используйте видимую величину вместо абсолютной величины.
Предположим, что радиус вашей небесной сферы составляет 1000 единиц, и вы хотите, чтобы Сириус (видимая величина m min = -1,45) имел видимый угловой радиус 5 миллирадиан. Тогда модельный радиус Сириуса r max будет равен 5 единицам, а звезда видимой величины m будет иметь модельный радиус
Если вы также хотите установить минимальный радиус модели звезды, попробуйте r(m) = be am , где
Например, чтобы получить r (6,0) = 0,5 с r (-1,45) = 5, как указано выше, вы можете использовать
Эти модельные радиусы далеки от реальности, но должны давать узнаваемое ночное небо. В реальной жизни радиус Солнца составляет около 2,3×10 -8 пк.
ооо
СидС
ПрофРоб
СидС
Майк Джи
СидС
Майк Джи