A A A A Автор Тема: Универсальная структура данных для регистрации объектов  (Прочитано 1224 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
Создавая ПО для обработки/хранения данных о (экзо)планетах и звёздах столкнулся с интересной задачей.
Для астрономического объекта (будь то астероид, планета или звезда) хотелось бы указывать параметры орбиты и "хозяйский компонент". Например, для Луны - Земля, а для Земли - Солнце. Изначально структура данных представлялась мне иерархической. Т.е. объект имеет ссылку на "хост". Звезды и планеты выстраивались в структуру, называемую "лес". Но тут возникли сложности:
1) иногда непонятно, какой из двух объектов является "хозяином" а какой - "спутником" (т.е. одинаковые в пределах точности измерений объекты)
2) для примера, вокруг относительно тесной пары примерно одинаковых звёзд может крутиться планета или ещё одна звезда - здесь непонятно, кто является хозяином для более удалённого объекта
3) звезды в галактике определённо движутся по орбите и хотелось бы их тоже описать и сохранить, однако вокруг какого объекта - опять непонятно
Возникла идея ввести новую сущность - "пара" (объектов, объединённых орбитой). Вокруг "пары" может крутиться ещё объект или другая пара. Но тут опять проблемы:
1) в случае с примерно одинаковыми объектами описание орбиты Кеплером становится неадекватным. Кеплерова орбита имеет упрощение, согласно которому масса спутника незначительна по сравнению с массой хозяина. Для типичных звёзд это не так.
2) в случае с галактическими орбитами звёзды образуют не орбитальную пару, а многочисленное орбитальное месиво, т.к. вся круговерть происходит вокруг общего центра масс...
Собственно вопрос в том, чтобы подобрать какую-нибудь универсальную и адекватную структуру данных
SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн ...а с платформы говорят:

  • *****
  • Сообщений: 4 952
  • Благодарностей: 79
  • "Злые звезды помогут нам"
    • Сообщения от ...а с платформы говорят:
Например взять за основную структурную единицу гравитационно-связанную систему (типа "кратная звезда с планетами и прочим хозяйством").

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
это не решает проблему 1 из второго списка
а на вторую проблему в принципе можно наплевать, если очень будет надо
SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн ...а с платформы говорят:

  • *****
  • Сообщений: 4 952
  • Благодарностей: 79
  • "Злые звезды помогут нам"
    • Сообщения от ...а с платформы говорят:
это не решает проблему 1 из второго списка
Имхо - как раз решает, поскольку позволяет вести "каталог верхнего уровня" вообще без учета взаимодействия компонентов внутри структурной единицы.

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
но требуется ведь ещё орбиту описать
а Кеплерова модель не подходит
SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
А где храните? В базе данных? Какие ограничения на хранение? Какой контекст использования? Это в программе или ещё где-то? Совершенно неясен контекст вопроса. Если в программе, какой язык используется?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
А где храните? В базе данных?
Ну допустим.
Какие ограничения на хранение?
да никаких, в общем-то
Какой контекст использования? Это в программе или ещё где-то? Совершенно неясен контекст вопроса. Если в программе, какой язык используется?
А вот язык не имеет значения. Понятия псевдокода и абстрактной структуры данных знаете? Ну использовал я python. Контекст простейший - поиск, изменение, добавление, удаление объектов.
SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн vsevolodsonАвтор темы

  • *****
  • Забанен!
  • Сообщений: 5 136
  • Благодарностей: 6
    • Сообщения от vsevolodson
Нашёл в американском каталоге двойных звёзд. Семикратная ню скорпиона.

SkyWatcher 100мм Eq2
Homo homini lupus est

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Я вообще-то хотел предложить в качестве структуры данных граф объектов в виде многосвязного списка контейнерного типа и иерархии объектов с базовым классом, который содержит основные данные по объекту. Потомки могут содержать дополнительные расширения по полям или свойствам. Но такая модель данных плохо ложится на базу данных. Поэтому я и спрашиваю про выбранный инструментарий и следующие из этого ограничения.
Реляционные структуры данных здесь довольно сложно организовать, хотя можно: поля в БД содержат основную информацию об объекте, плюс есть дополнительное BLOB-поле, содержащее сериализованную структуру/объект/кортеж/коллекцию_ключ-значение/что_угодно, но оно в выборке не участвует и достаётся целиком.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Serj

  • *****
  • Сообщений: 4 695
  • Благодарностей: 98
    • Сообщения от Serj
    • Тверской астроклуб
но требуется ведь ещё орбиту описать
а Кеплерова модель не подходит
Кеплерова модель есть компромисс. Хотите без компромиссов - тогда и структура данных не нужна, в идеале должно быть "все-ко-всем". N-body вам в помощь.
We have met the enemy and he is us.

hoarfrost III

  • Гость
Создавая ПО для обработки/хранения данных о (экзо)планетах и звёздах столкнулся с интересной задачей.
А что вы потом хотите с этими данными делать?
Для чего они потребуются?
Как планируете из пополнять?

Если чётко ответить на эти вопросы, кое-что может проясниться.

P.S. Планеты и звёзды - тоже упрощение, на самом деле они состоят из молекул, атомов, частиц, кварков,....