ВНИМАНИЕ! На форуме начался конкурс астрофотография месяца - ОКТЯБРЬ!
0 Пользователей и 1 Гость просматривают эту тему.
В Gaia DR2 есть только параллаксы с ошибками измерений, расстояний нет.
function numberRound($a, $cell) { // Округляет число до указанного количества ЗНАЧАЩИХ цифр. $aa = abs($a); $b = 2; $bor = 0; if ($aa > 1) { while ($aa > $b) { $b = $b * 10; $bor = $bor - 1; } } else { $b = $b / 10; while ($aa < $b) { $b = $b / 10; $bor++; } } $bor = round($bor + $cell); $bor = (int)$bor; return round($a, $bor); } function valideVal($val, $err) { if ($err == 0) { return $val; } /*Валидация числа до количества знаков, соответствующего погрешности.*/ $dist_value_size = log10(abs($val) / $err) + 2; return numberRound($val, $dist_value_size); }function calc_Dist($parallax, $dimension, $err) { /* Вычисление дистанции до звезды по параллаксу. */ $retr = new StdClass; $retr->status = false; if ((isset($parallax)) && (isset($dimension)) && (isset($err))) { $parallax = (float)$parallax; if ($parallax < 0) $parallax = 0; $err = (float)abs($err); if (($parallax == 0) || ($parallax < 0)) { return $retr; } //$retr->log = //$retr->log.'44.';//debug switch ($dimension) { case 'mas': //$retr->log = //$retr->log.'47';//debug $retr->status = true; $retr->dist = 1000 / $parallax; $retr->min_dist = 1000 / ($parallax + $err); if ($parallax > $err) { $retr->max_dist = 1000 / ($parallax - $err); } else { $retr->max_dist = $retr->dist * 10; } break; case 'arcsec': //$retr->log = //$retr->log.'58.';//debug if ($err == 1) { $err = 0.01; } $retr->status = true; $retr->dist = 1 / $parallax; $retr->min_dist = 1 / ($parallax + $err); if ($parallax > $err) { $retr->max_dist = 1 / ($parallax - $err); } else { $retr->status = false; return $retr; } break; default: $retr->status = false; } //$retr->log = //$retr->log.'78.';//debug $retr->min_err = numberRound($retr->dist - $retr->min_dist, 2); $retr->max_err = numberRound($retr->max_dist - $retr->dist, 2); $retr->dist = valideVal($retr->dist, $retr->min_err); $retr->min_dist = valideVal($retr->min_dist, $retr->min_err); $retr->max_dist = valideVal($retr->max_dist, $retr->min_err); } return $retr;}
как извлечь
Самому надо считать такие вещи.
можно распараллелить вычисления
При параллельных вычислениях, запускаются все потоки вычислений сразу.
вблизи полюсов
А кто-то заставляет разбивать сектора на одинаковое количество градусов?
надо будет привязать к границам созвездий.
Если не секрет, зачем? Вы карту галактики делаете, или гороскоп?
3D модель Галактики, конечно не всю сразу, а начиная от окрестностей Солнца и далее, пока позволяют вычислительные ресурсы.
Какие-то созвездия, координаты, сектора, при таком подходе - до фонаря вообще.
Каждый поток берет себе в обработку 1000 звезд, последний взятый номер записывает в общую базу данных, и идет себе считать. Следующий поток этот номер читает, и начиная со следующего индекса берет себе тоже ровно 1000 звезд... И так далее все оно крутится, с идеально равномерным распределением нагрузки по потокам.
используется при распараллеливании больших циклов обработки данных, в той же OpenMP или в Thread.Parallel библиотеке для многоядерных машин
Так что нужны именно большие пространственные сектора, объёмные выборки.
Просто скажем так, фразеологическое наполнение ваших постов, выдает в вас человека, который вряд ли умеет использовать ту же OpenMP на практике.
Хранение динамических данных о звездах, в БД, где индексами являются их координаты по осям x, y, z. Не пробовали?
Критика дала мало конструктива.