A A A A Автор Тема: StarGlobus - программирование portable планетария  (Прочитано 416 раз)

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

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
StarGlobus - Звёздный глобус, программа-планетарий c возможностями синтеза изображений при одновременной работе на двух вкладках с разным масштабом, поворотом изображения на произвольный угол.
Фильтры звёздной величины, объектов глубокого космоса, B и V спектральных диапазонов и др.). Перенацеливается на любую точку небесной сферы кликом мыши, есть точное наведение вводом координат центра в поля (для работы с пользовательскими объектами, такими как новые звёзды, астероиды, кометы, слабые переменные и др.) . Вывод подробной информации об отображаемых объектах из каталогов All-Scy Compiled catalog, Bright Star Catalog и NGC-2000.
Исходники на Object Pascal. При создании SkyGlobus использованы фрагменты программ из книги Монтенбрук и Пфлегер "Астрономия на Персональном компьютере".
Есть опция поиска объектов, на которые центрируется экран, в том числе из Variable Stars Catalog. Для расчета координат планет солнечной системы используется модель VSOP-87, в разработке Astrо.Vsop2013.
В версии 2025 настройки программы содержатся в файле defdir.dat, в котором по умолчанию выставлена точка наблюдений 0.0.0 широты, 0.0.0 долготы, для сохранения этих значений их надо отредактировать вручную, не трогая остальной текст. Южная широта ставится со знаком (-), долгота ставится от 0 до 360 градусов восточная. Вместе с тем, в пределах одного сеанса работы с программой, можно менять эти значения многократно на вкладке настроек без сохранения на диск.

Репозиторий исходников с portable версией проекта находится по адресу https://gitverse.ru/glscene/starglobus
Для работы программы под Windows 7/10/11 достаточно клонировать репозиторий на компьютер (или скачать его архив и раскрыть) и запустить файл StarGlobus.exe.
« Последнее редактирование: 24 Апр 2025 [08:05:33] от Павел Васильев »
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
В меню Вид пока добавлена простая схема планет Солнечной системы в 2D, которую предполагается заменить в следующей версии на 3D OpenGL и Vulkan. В директорию data включены также файлы с орбитальными параметрами и характеристиками планет (sun_planets.csv), лун (sun_moon.csv) и астероидов (sun_asteroids.csv).  Добавлен также файл самых известных комет sun_comets.csv.
Можно подключиться к проекту, зарегистрировавшись на российской платформе веб-сервиса gitverse.ru, добавить в проекте https://gitverse.ru/glscene/starglobus справа вверху проект в избранное, чтобы принять участие в разработке, стать соавтором с правом внесения изменений в StarGlobus.

В каталог sun_asteroids.csv, включающий 2715 астероидов размером более 20км, я добавил поле name_ru и перевёл на русский язык первую сотню и все размером более 90 км. Увлекательное дело, красивые названия и имена, в основном древнегреческие женские, но осталось ещё перевести 2тыс имён. Если кто-то смог бы  доперевести эту колонку, открыв файл в Excel, то за это спасибо, мы его включили бы в список контрибьюторов и соавторов репозитория StarGlobus. Можно конечно попросить искусственный интеллект, но потом всё равно "доверяй, но проверяй".
« Последнее редактирование: 24 Апр 2025 [09:20:26] от Павел Васильев »
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Guy Fawkes II

  • ****
  • Сообщений: 326
  • Благодарностей: 216
  • Мне нравится этот форум!
    • Сообщения от Guy Fawkes II
Павел Васильев, для того, чтобы убрать иероглифы, надо в smp1.pas в структурах заменить char на ANSIchar таким образом:

type datatype=record
         descript:array[0..20] of ANSIchar;
         end;
type ststr=record
     data:array[0..169]of ANSIchar;
     end;
type vststr=record
     data:array[0..158]of ANSIchar;
     end;
type stindex=record
     data:array[0..20]of ANSIchar;
     end;
type ngcstr=record
     data:array[0..96]of ANSIchar;
     end;

Я откомпилировал это на Embarcadero Delphi XE7, всё работает (разделитель - запятая).
Потом сделаем и для точки, но сначала надо, чтобы не было иероглифов.
Все формы выскакивают, по таймеру программа перерисовывается.
Обработчики не слетели, там их просто нет, кроме одного - на вкладке "обзор".
По директории для каталогов - её можно указывать уже сейчас через последнюю строку в файле defdir.dat (он потому так и называется).
Программа вообще очень шустрая, но работает через диск, гипотетически может тормозить на картах памяти для смартфонов
Должно быть примерно так:
Зарегаюсь чуть позже. Успехов!
Рефрактор ахромат 126/1200 самодельный на основе объектива DKD,  зрительная труба "Юкон-100", бинокли Veber 30х60 (24x47) и Military Marine 60x90 (9x58,5), а также

Планетарий "Звездный глобус"

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
для того, чтобы убрать иероглифы, надо в smp1.pas в структурах заменить char на ANSIchar таким образом:

type datatype=record
         descript:array[0..20] of ANSIchar;
         end;
...
Привет коллега, вы похоже не читали мои сообщения в соседней теме и здесь - я заменил в этих массивах тип Char на AnsiChar ещё неделю назад и, кстати, теперь этот модуль называется не smp1, а Astro.Drawing, а все каталоги перемещены в отдельную папку data. Так надо, чтобы не захламлять рабочую папку source с исходниками. Чтобы не было лишнего разнобоя в коде при обсуждении вам надо склонировать из гитверс репы (адрес дан выше) себе на компьютер текущую версию. Самый лучший и простой клиент работы с гит проектами открытых платформ - это TortoiseGit, перед этим установите сам Git, затем скачайте этот инструмент и он установится в проводник Windows. После того, как вы склонируете clone репозиторий StarGlobus из GitVerse.ru себе на машину, например,  в рабочую папку d:/StarGlobus.git, то все гитовские файлы будут помечены зелёными флажками. Если вы в Delphi или как-то иначе отредактируете какойто файл, то его флажок изменит свой цвет на красный. Новые модули надо добавлять в гит у себя в копии репозитория командой Add..., она также будет в меню Проводника. Наконец, если у вас есть права на запись в проект, вы сможете отправить сделанные изменения в коде на веб-сервис gitverse.ru c помощью команд commit & push. Тестирование в среде покажет ваши изменения, если что-то не так, то придётся их исправлять, сравнивать порой десятки файлов программой BeyondCompare или делать rivert. Все эти команды тоже есть в меню Проводника в секции клиента TortoiseGit.
И по поводу того, что у вас компилируется и на Rad Studio XE7. Всё, этот поезд давно ушёл, киньте его в мусорное ведро. Какой в нём смысл, если есть бесплатная Delphi Community Edition 11, в которой доступны тысячи дополнительных фич доступ к 32 типам баз данных? Но для астрономического программирования конечно лучше установить и использовать только последнюю версию Rad Studio v12.3 Atchitect, всё остальное в топку.
« Последнее редактирование: 24 Апр 2025 [16:14:11] от Павел Васильев »
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
В диалоге поиска звёзд выбор созвездия одной строкой из выпадающего списка конечно не очень удачное решение, есть отличный компонент TTreeView и там к списку созвездий очень даже красиво можно подключить и все символы 88 созвездий, загруженные в другой компонент, TVirtualImageCollection. Тоже самое со значками планет. А для астероидов, насколько мне известно, какого-то особого набора символов нет, но можно в списке imageindex карликовые планеты маркировать сферами, малые планеты и прочие астероиды дисками, а кометы хвостатые - в виде кружка с линиями сбоку типа спутника, помимо имени. Ещё нет важной детали - выбора систем координат и сеток. Я добавил модуль с диалогом в меню Опции, надо делать. Подсмотреть как грамотно рисовать сетки можно в исходниках SkyChart https://gitverse.ru/glscene/SkyChart, хотя там излишне наворочены детали настроек различных сеток, в чём практической пользы мало. Но линии созвездий и их границы показывать надо. Ещё должен быть один полезный чекбокс показать звёзды разной величины только в контуре одного выборочного созвездия. В SkyChart такого не встречал.   
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
По директории для каталогов - её можно указывать уже сейчас через последнюю строку в файле defdir.dat (он потому так и называется).
Это так не делается, для этого используются стандартные функции GetCurrentDir(), SetCurrentDir(), дополнительные GetDataPath(), SetDataPath() и пр., а так же диалог "Настройки" программы, в котором можно выбрать и сохранить пути к данным и не только, причём поставить флажки сохранять установки при выходе из системы автоматически. Как это сделано, например, в IDE.
Попутно вопрос, я то переименовал часть файлов с названиями smp(+1..10), но может в этом был какой-то сакральный смысл их так называть с 2004 года ? Причём среди них есть и формы и просто юниты. Вам конечно мб так удобней, но лучше отделять котлеты от мух и давать модулям более соответствующие назначению названия, если не возражаете. Префиксы тоже важны, во избежание возможных конфликтов со сторонними библиотеками.
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми

Оффлайн Guy Fawkes II

  • ****
  • Сообщений: 326
  • Благодарностей: 216
  • Мне нравится этот форум!
    • Сообщения от Guy Fawkes II
Павел Васильев: Доброго времени суток!
 Что-то на меня вся эта IT-дисциплина тоску навевает. Джуны, сеньоры, миддлы, бета-тестирование... Стандарты оформления кода, гонка за последними версиями... Профи, конечно, пишут много полезных вещей, не спорю, но вот этот принцип "код ради кода" - это зло, а не разделитель - запятая. IMHO. Зачем исправлять то, что и так работает?
Как там в подписи у изобретателя "Хромакора" - "Жизнь коротка, и хорошее небо слишком редко бывает...". Ну как-то так.
Теперь по существу. Планетариев много. Как и велосипедов. "Просто планетарий" имел бы гарантированный успех году так в 1995, даже не в 2004, в 2004 уже был StarCalc, из отечественных. Но его разработчик нас безвременно покинул, люди код какое-то время совершенствовали.
Сейчас есть Stellarium, один из его разработчиков, Александр Вольф, присутствует на форуме.
Один планетарий не может уметь всё - при попытке это сделать получится нежизнеспособный монстр, который все равно не будет уметь всё.
Зачем я делал этот проект?  У меня была цель - быстро посмотреть звезды до 12 m в районе нужного объекта, 2 каталога на 2-х экранах, мышкой наводимся на любую точку небесной сферы, где-то секундная точность - вот оно! Картинку можно вращать, можно наводиться на переменные по поиску, какой-то локальный минимум достигнут.
Программа векторная, звезды не раздуваются с увеличением масштаба, как в том же Stellarium-e, хотя спутники и виды планет, топография Марса того же, астрометрические координаты звезд на момент времени - это всё к нему.
Как в анекдоте, "Я не выдаю кредиты, банк не торгует семечками".

Если хотите стартап, надо подумать, в чем (и при каких условиях) могут быть явные преимущества данной программы. Допустим, где-то окажется полезной способность занять в памяти не выше 10 МБ. Гипотетически, мы хотим увидеть что-то среди звезд до 12 величины, находясь при этом не обязательно на Земле. Значит надо в первую очередь копать класс TSite и предусматривать возможность задания места наблюдений.

Бортовое астронавигационное приложение для весьма специфического железа. Шанс мизерный, конечно,  но для попытки обогнать RedShift тупым наращиванием функционала шанс нулевой.

Модули хотите - переименовывайте.
« Последнее редактирование: 26 Апр 2025 [00:42:59] от Guy Fawkes II »
Рефрактор ахромат 126/1200 самодельный на основе объектива DKD,  зрительная труба "Юкон-100", бинокли Veber 30х60 (24x47) и Military Marine 60x90 (9x58,5), а также

Планетарий "Звездный глобус"

Оффлайн Павел ВасильевАвтор темы

  • *****
  • Сообщений: 984
  • Благодарностей: 31
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Стандарты оформления кода, гонка за последними версиями... Профи, конечно, пишут много полезных вещей, не спорю, но вот этот принцип "код ради кода" - это зло, а не разделитель - запятая. IMHO. Зачем исправлять то, что и так работает?
К сожалению, многие прежние и может быть надёжные программы быстро устаревают и как правило уже не идут на новых OS, их надо обновлять. А когда они разработаны на инструментах 25 летней давности, как в случае с Delphi6, то ещё и язык программирования кое в чём обновился - онлайн переменные, дженерики, поддержка юникода и пр. Так что никуда не денешься, если программа интересная, то имеет смысл делать апгрейд и заодно расширить функционал. Но раз вас устраивает только решение узкой задачи как вы её описали, то можно оставить всё как есть, сейчас вроде всё работает с десятичной точкой в данных  А групповой проект  по работе с опенсорс репозиторием StarGlobus3d останется до лучших времен, когда кто-то может подключится к его развитию.  Ссылки на проект на GitVerse я привёл выше. Успехов вам в открытии астероидов.
Астромодель нооэволюции Галактики https://gitverse.ru/glscene/astrobloq
Численное решение парадокса Ферми