KStars — это бесплатное кроссплатформенное астрономическое программное обеспечение с открытым исходным кодом.
Он обеспечивает точное графическое моделирование ночного неба из любого места на Земле, в любую дату и время. Дисплей включает в себя до 100 миллионов звезд, 13 000 объектов дальнего космоса, все 8 планет, Солнце и Луну, а также тысячи комет, астероидов, сверхновых и спутников.
Для студентов и преподавателей он поддерживает регулируемую скорость моделирования для просмотра явлений, происходящих в длительных временных масштабах, астрокалькулятор KStars для прогнозирования соединений и многие распространенные астрономические расчеты. Для астрономов-любителей он предоставляет планировщик наблюдений, инструмент небесного календаря и редактор поля зрения для расчета поля зрения оборудования и его отображения. Найдите интересные объекты с помощью инструмента «Что случилось сегодня вечером», постройте графики зависимости высоты от времени для любого объекта, распечатайте высококачественные карты неба и получите доступ к большому количеству информации и ресурсов, которые помогут вам исследовать Вселенную!
В комплект KStars входит пакет астрофотографии Ekos, комплексное решение для астрофотографии, которое может управлять всеми устройствами INDI, включая многочисленные телескопы, ПЗС-матрицы, зеркальные фотокамеры, фокусеры, фильтры и многое другое. Ekos поддерживает высокоточное отслеживание с использованием онлайн- и офлайн-решателя астрометрии, возможностей автофокусировки и автонаведения, а также захват одного или нескольких изображений с помощью мощного встроенного менеджера последовательностей.
Авторские права (c) 2001–2024 принадлежат команде KStars:
KStars — бесплатное программное обеспечение, выпущенное под лицензией GNU Public License. См. КОПИРОВАНИЕ для получения информации о лицензии GPL.
KStars доступен для Windows, MacOS и Linux. Вы можете скачать последнюю версию с официального сайта KStars.
В Linux он доступен для большинства дистрибутивов Linux.
Последняя стабильная версия — v3.6.8.
Домашняя страница KStars
Репозиторий KStars Git
Веб-чат KStars
Форум, на котором часто обсуждают KStars
Справочник KStars можно найти в каталоге $(KDEDIR)/share/doc/HTML//kstars/. Вы также можете легко получить к нему доступ из меню «Справка», нажав клавишу [F1] или посетив https://docs.kde.org/?application=kstars. К сожалению, он немного устарел. Мы приветствуем добровольцев, которые помогут обновить его.
Кроме того, имеются следующие файлы README:
README: Этот файл; общая информация README.planetmath: объяснение алгоритмов, используемых для вычисления положения планет. README.customize: дополнительные параметры настройки. README.images: информация об авторских правах на изображения, используемые в KStars. README.i18n: Инструкция для переводчиков
Код можно клонировать, просматривать и отправлять запросы на слияние через репозиторий KStars. Если вы новичок в удаленных репозиториях git, прочтите раздел «Советы по Git» ниже. Примечание. Ранее KStars использовал Phabricator для своих мерж-реквестов. Эта система больше не используется.
Если вы планируете разрабатывать KStars, настоятельно рекомендуется использовать IDE. Вы можете использовать любую IDE по вашему выбору, но рекомендуется использовать QtCreator(https://www.qt.io/product) или KDevelop(https://www.kdevelop.org), поскольку они больше подходят для разработки на Qt/KDE.
Чтобы открыть KStars в QtCreator, выберите файл CMakeLists.txt в исходной папке KStars, а затем настройте местоположение и тип сборки.
Предварительные пакеты
Для сборки и разработки KStars из вашего дистрибутива может потребоваться несколько пакетов. Вот список.
Необходимые зависимости
GNU Make, GCC — основные инструменты для сборки.
cmake — система сборки, используемая KDE
Библиотека Qt > 5.12.0
Несколько фреймворков KDE: KConfig, KDocTools, KGuiAddons, KWidgetsAddons, KNewStuff, KI18n, KInit, KIO, KXmlGui, KPlotting, KIconThemes.
eigen — библиотека линейной алгебры
zlib — библиотека сжатия
StellarSolver — см. https://github.com/rlancaste/stellarsolver.
Дополнительные зависимости
libcfitsio — библиотека FITS
libindi — нейтральный распределенный интерфейс для управления оборудованием.
xplanet
astrometry.net
библиотека
wcslib
libgsl
qtkeychain
Установка необходимых компонентов
Дебиан/Убунту
Команда apt-add-respository необходима для библиотеки libstellarsolver-dev apt-get. Альтернативно, вы можете пропустить apt-add-repository, удалить libstellarsolver-dev из apt-get, а также собрать и установить stellarsolver с https://github.com/rlancaste/stellarsolver.
sudo apt-add-repository ppa:mutlaqja/ppa sudo apt-get -y install build-essential cmake git libstellarsolver-dev libxisf-dev libeigen3-dev libcfitsio-dev zlib1g-dev libindi-dev extra-cmake-modules libkf5plotting-dev libqt5svg5-dev libkf5xmlgui-dev libkf5kio-dev kinit-dev libkf5newstuff-dev libkf5doctools-dev libkf5notifications-dev qtdeclarative5-dev libkf5crash-dev gettext libnova-dev libgsl-dev libraw-dev libkf5notifyconfig-dev wcslib-dev libqt5websockets5-dev xplanet xplanet-images qt5keychain-dev libsecret-1-dev breeze-icon-theme libqt5datavisualization5-dev
Федора
yum install cfitsio-devel eigen3-devel stellarsolver-devel cmake extra-cmake-modules.noarch xisf-devel kf5-kconfig-devel kf5-kdbusaddons-devel kf5-kdoctools-devel kf5-kguiaddons-devel kf5-ki18n-devel kf5-kiconthemes-devel kf5-kinit-devel kf5-kio-devel kf5-kjobwidgets-devel kf5-knewstuff-devel kf5-kplotting-devel kf5-ktexteditor-devel kf5-kwidgetsaddons-devel kf5-kwindowsystem-devel kf5-kxmlgui-devel libindi-devel libindi-static qt5-qtdeclarative-devel qt5-qtmultimedia-devel qt5-qtdatavis3d-devel qt5-qtsvg-devel wcslib-devel xplanet zlib-devel
Компиляция
Откройте консоль и выполните следующие команды:
mkdir -p ~/Projects/build/kstars cd ~/Projects git clone https://invent.kde.org/education/kstars.git cd build/kstars cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo ~/Projects/kstars make -j16 sudo make install
Чтобы запустить KStars, просто введите kstars в терминале.
KStars использует художественный стиль для форматирования всех исходных файлов C++. Обязательно применяйте следующие правила стилей к любому коду, отправляемому в INDI. В Linux вы можете создать файл ~/.astylerc , содержащий следующие правила:
--style=allman --align-reference=name --indent-switches --indent-modifiers --indent-classes --pad-oper --indent-col1-comments --lineend=linux --max-code-length=124
Некоторые IDE (например, QtCreator) поддерживают автоматическое форматирование кода каждый раз, когда вы сохраняете файл на диск.
В Linux выполните следующее, чтобы установить необходимые программы:
sudo apt-get install docbook docbook-utils
Исходный код руководства находится в kstars/doc. Вы можете редактировать эти файлы, включать их в коммиты и MR, как если бы вы делали это с файлами C++ (см. ниже). Вы можете разобраться с разметкой на примере или изучить онлайн-документ для docbook. В общем, лучше всего сначала скопировать весь каталог kstars/doc во временный каталог, а затем отредактировать и сгенерировать руководство там, потому что если вы запустите meinproc в основном каталоге исходного кода, вы сгенерируете там множество файлов .html, и вы не хочу сохранять сгенерированные файлы в свой репозиторий git.
cp -pr kstars/doc ~/DOCBOOK cd ~/DOCBOOK meinproc5 index.docbook
Вышеупомянутое должно генерировать html-файлы. Затем в браузере вы можете просто открыть DOCBOOK/index.html и перейти к нужной части, например, просто введите что-то похожее в адресную строку Chrome: file:///home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/DOCBOOK/ doc/tool-ekos.html Внесите изменения в некоторые файлы .docbook в ~/DOCBOOK/*.docbook. Восстановите файлы html и просмотрите изменения в браузере, как и раньше. Итерировать.
Чтобы проверить синтаксис, вы можете запустить:
checkXML5 index.docbook
Когда вы будете довольны, скопируйте измененные файлы обратно в kstars/doc и обработайте отредактированные/новые файлы как обычно с помощью git, включая измененные файлы в новый коммит и, в конечном итоге, в новый мерж-реквест.
См. раздел ниже «Советы по Git», где описаны технические особенности создания мерж-реквеста. В процессе оформления запроса вам необходимо будет описать запрос. Пожалуйста, используйте формат, аналогичный этому, который содержит разделы для краткого описания того, что было сделано, что было изменено в каждом файле, других соответствующих примечаний и способов проверки ваших изменений.
Чтобы вносить изменения в KStars, вы должны быть знакомы с git, и здесь не место для такого руководства. Для этого в сети есть много отличных ресурсов. Однако в абзаце ниже будет представлен обзор одного из способов создания мерж-реквеста, при условии, что у вас уже есть достаточный опыт работы с git, чтобы клонировать KStars, создать локальную ветку, изменить код по своему усмотрению, зафиксировать изменения в локальной ветке и и тщательно протестируйте свой код.
Вот один хороший ресурс для рабочего процесса fork-branch-git-it для внесения изменений в KStars. Следующие шаги вдохновлены этой страницей.
Одноразовая настройка среды KStars git.
Создайте свою личность KDE
Авторизоваться. Перейдите на страницу gitlab KStars и войдите в систему в правом верхнем углу.
Форкните проект. Затем, все еще на странице gitlab KStars, нажмите FORK в правом верхнем углу, чтобы создать собственную вилку проекта.
Скопируйте свой URL. Обратите внимание на URL-адрес вашего форка. Это должно быть https://invent.kde.org/ВАШЕ_ИМЯ_KDE/kstars.
Клон KStars. Вернувшись на свой компьютер, выполните эти команды
mkdir -p ~/Проекты
компакт-диск ~/Проекты
git clone https://invent.kde.org/ВАШЕ_KDE_NAME/kstars
компакт-диск kstars
Добавьте свой восходящий поток. Добавьте основной репозиторий KStars в свой раздвоенный репозиторий.
git удаленно добавить восходящий поток https://invent.kde.org/education/kstars
Теперь вы настроены.
Шаги, используемые для каждого изменения. После однократной настройки (см. выше) описанные ниже шаги можно использовать для каждой отправки новой функции. Таким образом, вы создадите ветку функций в своем локальном репозитории, внесете туда желаемые изменения и протестируете, отправите их в свою вилку, создадите запрос на объединение вашей ветки с основным репозиторием KStars, дождетесь обратной связи и, возможно, повторите свою работу. изменения в надежде на одобрение со стороны власти.
Создайте свою функциональную ветку.
git checkout -b ВАШ_ОТДЕЛЕНИЕ_ИМЯ
Внесите изменения
Зафиксируйте изменения
git совершить -a
Внесите изменения в свой раздвоенный репозиторий.
git push origin YOUR_BRANCH_NAME
Создать запрос на слияние
Используйте свой браузер, чтобы посетить разветвленный репозиторий по адресу https://invent.kde.org/ВАШЕ_ИМЯ_KDE/kstars.
Вы должны увидеть возможность создать запрос на слияние для YOUR_BRANCH_NAME. Заполните данные (см. раздел выше).
Вы должны увидеть новый URL-адрес, посвященный этому мерж-реквесту.
Внесите некоторые изменения. Вы можете получить запросы на изменение части вашего кода.
Если да, вы просто вернетесь в свой местный филиал, внесете и протестируете свои изменения.
Зафиксируйте изменения, как указано выше, внутри своей ветки с помощью: git commit -a
Отправьте изменения вашей ветки в разветвленный репозиторий, как указано выше, с помощью: git push origin YOUR_BRANCH_NAME.
Ваши изменения должны автоматически быть добавлены в ваш мерж-реквест. Чтобы убедиться, проверьте страницу мерж-реквеста.
Возможно, вам придется перебазировать свой код — подробности см. ниже.
Перебазирование ваших изменений. Другие могут вносить изменения в KStars одновременно с тем, как вы работаете над вашей функцией. Перебазирование — это обновление вашей версии KStars и ваших конкретных изменений так, как будто вы изменили последнюю версию KStars, например, отражают изменения в кодовой базе, внесенные после того, как вы клонировали или обновили свою собственную копию KStars. Это важная тема, которую вы можете найти в Google, но следующие инструкции работают в большинстве случаев.
Обратите внимание, что это делается до того, как вы создадите мерж-реквест, когда вы единственный, кто видит изменения вашего кода. После того как вы запустили мерж-реквест, ваш код становится «публичным», и вместо перебазирования вам следует выполнить процедуру слияния, описанную ниже.
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo git checkout YOUR_BRANCH_NAME git rebase master git push origin YOUR_BRANCH_NAME -f
Если при перебазировании возникнут сложности, git предложит, как их исправить.
Объединение чужих изменений. После того как вы отправите мерж-реквест, ваш код смогут увидеть (и отредактировать) другие. На этом этапе, хотя вам все еще может потребоваться обновление до последней версии KStars, перебазирование уничтожает информацию об изменениях и может перезаписать то, что делают другие. Вместо этого лучше всего «влить» текущую версию KStars в ваш код.
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo git checkout YOUR_BRANCH_NAME git merge master git push origin YOUR_BRANCH_NAME
Отличием от раздела rebase являются две последние команды: вместо «git rebase master» используется «git merge master». Также «git push» не использует опцию -f. При первом запуске «git push» git может попросить вас добавить к команде «set-upstream origin». В этом случае следуйте этим инструкциям.
Если вы выполните эту процедуру, вы обнаружите новую «фиксацию слияния», добавленную в журнал git вашей ветки.
Ваше следующее изменение . Как только ваш мерж-реквест будет завершен (и, возможно, интегрирован в KStars), вы, возможно, захотите продолжить разработку. Следующее изменение будет использовать другую (новую) ветвь функции, а первую ветвь функции можно удалить. Возможно, вам захочется регулярно запускать следующее, чтобы поддерживать актуальность вашей основной ветки с помощью KStars.
cd ~/Projects/kstars git checkout master git pull upstream master # Get the master from the main KStars repo onto your local clone git push origin master # Then push your updated local clone into your forked repo
Тесты хранятся в папке Tests
и используют QTest в качестве платформы поддержки:
Унитарные тесты можно найти в auxiliary
, capture
, fitsviewer
и т. д. Они пытаются проверить поведение минимального набора классов и поддерживают разработку функций.
Тесты пользовательского интерфейса можно найти в kstars_lite_ui
и kstars_ui
. Они реализуют варианты использования так, как это сделал бы конечный пользователь из пользовательского интерфейса, и уделяют особое внимание доступности визуальной обратной связи и стабильности процедур.
Решите, где в Tests
будет находиться ваш новый унитарный тест. Классы KStars должны находиться в папке, соответствующей их происхождению: например, тесты вспомогательных классов находятся в auxiliary
. Найдите подходящее место для теста в зависимости от тестируемой части системы. Например, папка с именем thatkstarscategory
.
Создайте новый класс унитарного теста или скопируйте и вставьте существующий унитарный тест в новый. В качестве примера проверьте Tests/kstars_ui_tests/kstars_ui_tests.h
. Назовите файлы .h
и .cpp
как «test[класс kstars в нижнем регистре]» (например, «testthatkstarsclass») и обновите их, чтобы они соответствовали следующему:
/* [Author+Licence header] */ #ifndef TESTTHATKSTARSCLASS_H #define TESTTHATKSTARSCLASS_H #include <QtTest> #include <QObject> class TestThatKStarsClass: public QObject { Q_OBJECT public: explicit TestThatKStarsClass(QObject *parent = null); private slots: void initTestCase(); // Will trigger once at beginning void cleanupTestCase(); // Will trigger once at end void init(); // Will trigger before each test void cleanup(); // Will trigger after each test void testThisParticularFunction_data(); // Data fixtures for the test function (Qt 5.9+) void testThisParticularFunction(); // Test function } #endif // TESTTHATKSTARSCLASS_H
/* [Author+Licence header] */ #include "testthatkstarsclass.h" TestThatKStarsClass::TestThatKStarsClass(QObject* parent): QObject(parent) {} TestThatKStarsClass::initTestCase() {} TestThatKStarsClass::cleanupTestCase() {} TestThatKStarsClass::init() {} TestThatKStarsClass::cleanup() {} TestThatKStarsClass::testThisParticularFunction_data() { // If needed, add data fixtures with QTest::AddColumn/QTest::AddRow, each will trigger testThisParticularFunction } TestThatKStarsClass::testThisParticularFunction() { // Write your tests here, eventually using QFETCH to retrieve the current data fixture } QTEST_GUILESS_MAIN(TestThatKStarsClass);
Вы можете использовать один файл для хранения и объявления, и определения, но вам нужно будет #include "testthatkstarsclass.moc"
между объявлением и определением.
Обновите конфигурацию CMake, чтобы добавить тест. Если вы создали новую папку, создайте новый CMakeLists.txt
чтобы добавить свой тест:
ADD_EXECUTABLE( testthatkstarsclass testthatkstarsclass.cpp ) TARGET_LINK_LIBRARIES( testthatkstarsclass ${TEST_LIBRARIES}) ADD_TEST( NAME ThatKStarsClassTest COMMAND testthatkstarsclass )
Попросите CMakeLists.txt
, расположенный на одну папку выше в файловой системе, включить этот CMakeLists.txt
, добавив:
include_directories( ... ${kstars_SOURCE_DIR}/kstars/path/to/the/folder/of/the/kstars/class/you/are/testing ) ... add_subdirectory(thatkstarscategory)
Убедитесь, что вы добавили свой add_subdirectory
в правильную группу зависимостей. Например, тесты Ekos требуют INDI_FOUND
.
Напишите свои тесты. Обязательно документируйте поведение с помощью своих тестов. Если вы случайно нашли ошибку, не исправляйте ее, а отметьте ее макросом QEXPECT_FAIL
. Тест зафиксирует неправильное поведение, пока ошибка существует, и завершится неудачей, когда ошибка будет исправлена. И только после этого тест может быть обновлен. Также обратите внимание на поддержку версий библиотеки Qt. Например, для фиксации данных требуется Qt 5.9+.
Выполните те же действия, что и для унитарных тестов, но найдите свои тестовые классы в kstars_ui_tests
.
Одна важная вещь в тестах пользовательского интерфейса заключается в том, что все они должны использовать QStandardPaths::setTestModeEnabled(true)
, чтобы они выполнялись с отдельной пользовательской конфигурацией, которая изначально пуста. Таким образом, для правильной работы тестов пользовательского интерфейса требуется предварительная настройка, например использование нового мастера настройки или настройка географического местоположения. По этой причине вам необходимо добавить выполнение вашего теста в Tests/kstars_ui_tests/kstars_ui_tests.cpp
в main()
после выполнения TestKStarsStartup
.
Вторая важная особенность QTest заключается в том, что тестовые функции не имеют кода возврата. Поэтому необходимо писать макросы для учета дублированного кода. В заголовочных файлах тестовых классов kstars_ui_tests
вы найдете множество существующих макросов для извлечения гаджетов, нажатия кнопок или заполнения виджетов QComboBox
...
Третья важная особенность интерфейса KStars заключается в том, что он сочетает в себе элементы пользовательского интерфейса KDE и Qt. Таким образом, иногда тесты требуют перемещения кода проверки в вызов QTimer::singleShot
, а иногда даже нажатие на кнопку приходится делать асинхронным, чтобы тест оставался под контролем (модальные диалоги). К счастью, эти хаки не меняют выполнение тестируемого кода.
При тестировании вам необходимо убедиться, что вы всегда используете элементы, которые может использовать конечный пользователь. Конечно, если тест требует настройки, которая на самом деле не является частью интересных вызовов, вы можете взломать прямой вызов. Например, некоторые тесты Ekos, требующие, чтобы симулятор телескопа указывал на определенное место, используют QVERIFY(Ekos::Manager::Instance()->mountModule()->sync(ra,dec))
. Помните, что иногда вам нужно оставить время для отправки и перехвата асинхронных сигналов.
Джейсон Харрис [email protected]
Джасем Мутлак [email protected]
Акарш Симха [email protected]
Алексей Худяков [email protected]
Артем Федоскин [email protected]
Карстен Нихаус [email protected]
Крис Роуленд [email protected]
Чаба Кертеш [email protected]
Эрик Дежуане [email protected]
Гарри де Валанс [email protected]
Хайко Эверманн [email protected]
Хай Мурвейт [email protected]
Джеймс Боулин [email protected]
Жером Сонрье [email protected]
Джон Эванс [email protected]
Джозеф МакГи [email protected]
Марк Холломон [email protected]
Мартин Пискерниг [email protected]
Медерик Бокуен [email protected]
Пабло де Висенте [email protected]
Пракаш Мохан [email protected]
Рафал Кулага [email protected]
Ришаб Арора [email protected]
Роберт Ланкастер [email protected]
Самикшан Байрагья [email protected]
Томас Кабельман [email protected]
Валентин Беттчер [email protected]
Виктор Кэрбуне [email protected]
Винсент Жаго [email protected]
Вольфганг Райсенбергер [email protected]
Юрий Чорнойван [email protected]
Большая часть данных каталога поступила из Центра астрономических данных НАСА. Сайт: http://adc.gsfc.nasa.gov/.
Данные NGC/IC собраны Кристианом Дершем из базы данных OpenNGC. https://github.com/mattiaverga/OpenNGC (лицензия CC-BY-SA-4.0)
Данные о сверхновых взяты из проекта «Открытый каталог сверхновых» по адресу https://sne.space. См. опубликованную статью здесь: http://adsabs.harvard.edu/abs/2016arXiv160501054G.
KStars ссылается на отличные коллекции изображений и HTML-страницы, созданные организацией «Студенты за исследование и освоение космоса», по адресу: http://www.seds.org.
KStars ссылается на онлайн-изображения оцифрованного обзора неба, которые вы можете запросить по адресу: http://archive.stsci.edu/cgi-bin/dss_form.
Ссылки KStars на изображения из проекта HST Heritage и пресс-релизы HST: http://heritage.stsci.edu http://oposite.stsci.edu/pubinfo/pr.html
KStars ссылается на изображения из программы Advanced Observer в Национальной обсерватории Китт-Пик. Если вы интересуетесь астрофотографией, вы можете ознакомиться с их программой: http://www.noao.edu/outreach/aop/
Авторы каждого изображения, используемого в программе, указаны в README.images.
KStars — это труд любви. Это началось как мое личное хобби, но очень скоро после того, как я впервые опубликовал код на Sourceforge, он начал привлекать других разработчиков. Я просто полностью впечатлен и удовлетворен моими соразработчиками. Я не мог и мечтать о более талантливой и дружной команде. Само собой разумеется, что без их усилий KStars не были бы такими, какими они являются сегодня. Вместе мы сделали то, чем можем гордиться.
Мы использовали (в основном) две книги в качестве руководства при написании алгоритмов, используемых в KStars:
«Практическая астрономия с вашим калькулятором», Питер Даффет-Смит
«Астрономические алгоритмы» Жана Меуса
Спасибо разработчикам Qt и KDE, чей бесподобный API сделал KStars возможным. Спасибо также неустанным усилиям команды переводчиков KDE, которые представили KStars глобальной аудитории.
Спасибо всем на досках объявлений KDevelop и на irc.kde.org за ответы на мои частые вопросы.
Спасибо также многочисленным пользователям, приславшим отчеты об ошибках или другие отзывы.
Ты все еще читаешь это? :) Ну вот и все. Надеюсь, вам понравится KStars!
Джейсон Харрис [email protected]
Список рассылки разработчиков KStars [email protected]
Присылайте нам идеи и отзывы!