Используя значения прямого восхождения и склонения из базы данных HYG от The Astronomy Nexus :
Прямое восхождение измеряется в часах, а склонение в градусах.
1 - Преобразование прямого восхождения и склонения в градусы
float getAngle(float value, char units)
{
if (units == 'h')
{
// 15 degrees = 1 hour
// 360/24 = 15
return value * 15;
}
else
{
return value;
}
}
Когда вводится прямое восхождение, ввод будет умножен на 15, потому что RA измеряется в часах.
При вводе склонения возвращается введенное значение, потому что Dec уже измеряется в градусах.
2 - Разработайте векторы
Можно построить два равнобедренных треугольника, один для горизонтальной плоскости, а другой для вертикальной плоскости. Углы - это альфа и дельта, прямое восхождение и склонение соответственно. Используя эти углы и зная, что некоторые из расстояний равны расстоянию между центром небесной сферы и звездой, следующий код должен работать.
Vector3 getVectors(float RA, float Dec)
{
float x = distanceStars;
float z = (2 * distanceStars * (Mathf.Sin((getAngle(RA, 'h'))/ 2)));
float y = (2 * distanceStars * (Mathf.Sin((getAngle(Dec, 'd'))/ 2)));
return new Vector3(x, y, z);
}
К сожалению, мой код не работает, так как это результат, который я получаю:
Как видите, звезды (белые точки) неравномерно распределяются вокруг Земли (черная сфера посередине).
Было бы здорово, если бы кто-нибудь помог мне с этим.
Звезды должны соответствовать но, кажется, заговор в вместо этого самолет.
Обычно ось x находится в точке ( α =0 ч , δ = 0 °), ось у находится в точке ( α = 6 ч , δ = 0 °), а ось z находится в точке δ = +90 °.
Используя прямоугольные треугольники вместо равнобедренных,
Затем , и
В большинстве математических библиотек для углов используются радианы. Передача углов в других единицах для триггерных функций может привести к тому, что небесная сфера будет покрыта несколько равномерно, но неправильно.
пользователь31179
пользователь21
PM 2Кольцо
double
, а неfloat
.СидС
СидС
пользователь31179