KStars 是免费、开源、跨平台的天文学软件。
它可以在地球上任何位置、任何日期和时间提供准确的夜空图形模拟。显示内容包括多达 1 亿颗恒星、13,000 个深空天体、全部 8 颗行星、太阳和月亮,以及数千颗彗星、小行星、超新星和卫星。
对于学生和教师来说,它支持可调节的模拟速度,以便查看长时间尺度内发生的现象,支持 KStars Astrocalculator 来预测合相,以及许多常见的天文计算。对于业余天文学家,它提供了观测计划器、天空日历工具和 FOV 编辑器来计算设备的视场并显示它们。在“今晚发生了什么”工具中找出有趣的天体,绘制任何天体的高度与时间图表,打印高质量的天空图,并获得大量信息和资源来帮助您探索宇宙!
KStars 附带 Ekos 天文摄影套件,这是一个完整的天文摄影解决方案,可以控制所有 INDI 设备,包括众多望远镜、CCD、DSLR、聚焦器、滤镜等。 Ekos 支持使用在线和离线天体测量解算器进行高精度跟踪、自动对焦和自动引导功能,并使用强大的内置序列管理器捕获单个或多个图像。
版权所有 (c) 2001 - 2024,KStars 团队:
KStars 是自由软件,根据 GNU 公共许可证发布。请参阅复制以获取 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.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 开发。
要在 QtCreator 中打开 KStars,请选择 KStars 源文件夹中的 CMakeLists.txt 文件,然后配置构建位置和类型。
必备包
要构建和开发 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——仪器中性分布式接口,用于控制设备。
星球
天体测量网
利布劳
wcslib
库文件
qt钥匙扣
安装先决条件
Debian/Ubuntu
apt-get 的 libstellarsolver-dev 需要 apt-add-respository 命令。或者,您可以跳过 apt-add-repository,从 apt-get 中删除 libstellarsolver-dev,然后从 https://github.com/rlancaste/stellarsolver 构建并安装 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++ 源文件。请确保将以下 astyle 规则应用于提交给 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++ 文件一样(见下文)。您可以通过示例找出标记,或者从在线文档中学习文档。一般来说,最好先将整个 kstars/doc 目录复制到一个临时目录,并在那里编辑并生成手册,因为如果你在主源目录中运行 meinproc,你会在那里生成许多 .html 文件,并且你不想将生成的文件提交到您的 git 存储库。
cp -pr kstars/doc ~/DOCBOOK cd ~/DOCBOOK meinproc5 index.docbook
上面应该生成 html 文件。然后,在浏览器中,您可以简单地打开 DOCBOOK/index.html 并导航到您想要的部分,例如,只需在 chrome 的网址栏中输入类似的内容: file:///home/YOUR_USER_NAME/DOCBOOK/ doc/tool-ekos.html 对 ~/DOCBOOK/*.docbook 中的一些 .docbook 文件进行更改。重新生成 html 文件,并像以前一样在浏览器中查看更改。迭代。
要检查语法,您可能需要运行:
checkXML5 index.docbook
一旦您满意,将修改后的文件复制回 kstars/doc,并像往常一样使用 git 处理编辑/新文件,将修改后的文件包含在新的提交中,并最终包含在新的合并请求中。
请参阅下面的“Git 提示”部分,了解如何生成合并请求的技术细节。在提出请求的过程中,您需要描述请求。请使用与此类似的格式,其中包含一些部分来总结已完成的操作、每个文件中修改的内容、其他相关注释以及如何测试更改。
您必须熟悉 git 才能对 KStars 进行更改,这里不是提供此类教程的地方。网络上有许多优秀的资源。不过,下面的段落将概述发出合并请求的一种方法,前提是您已经有足够的 git 经验来克隆 KStars、创建本地分支、根据需要修改代码、将更改提交到本地分支,并彻底测试您的代码。
这是一个很好的资源,可以让 fork-branch-git-workflow 进行 KStars 更改。以下步骤受到该页面的启发。
一次性 KStars git 环境设置。
打造您的 KDE 身份
登录。进入KStars gitlab页面,右上角登录。
分叉该项目。然后,仍然在 KStars gitlab 页面上,单击右上角的 FORK,创建您自己的项目分支。
复制您的网址。记下你的 fork 的 url。应该是 https://invent.kde.org/YOUR_KDE_NAME/kstars
克隆 KStar。返回计算机上运行这些命令
mkdir -p ~/项目
cd ~/项目
git 克隆 https://invent.kde.org/YOUR_KDE_NAME/kstars
光盘kstars
添加您的上游。将 KStars 主存储库添加到您的分叉存储库中。
git 远程添加上游 https://invent.kde.org/education/kstars
现在您已设置完毕。
每次更改所使用的步骤。一次性设置(如上)之后,可以将以下步骤用于每个新功能的提交。总之,您将在本地存储库中创建一个功能分支,在那里进行所需的更改并测试,将它们推送到您的分叉,创建请求以将您的分叉与主 KStars 存储库合并,等待反馈,并可能迭代您的分叉。更改希望得到当局的批准。
创建您的功能分支。
git checkout -b YOUR_BRANCH_NAME
做出你的改变
提交您的更改
git 提交 -a
将更改推送到您的分叉存储库。
git push origin YOUR_BRANCH_NAME
创建合并请求
使用浏览器访问您的分叉存储库:https://invent.kde.org/YOUR_KDE_NAME/kstars
您应该会看到一个为 YOUR_BRANCH_NAME 创建合并请求的选项。填写详细信息(请参阅上一节)。
您应该能够看到专用于该合并请求的新 URL。
做出一些改变。您可能会收到修改某些代码的请求。
如果是这样,您只需返回当地分支机构,进行并测试您的更改即可。
如上所述,在分支内使用以下命令提交更改: git commit -a
将分支的更改推送到您的分叉存储库,如上所述: git push origin YOUR_BRANCH_NAME
您的更改应自动添加到您的合并请求中。检查合并请求的页面以确定。
您可能需要对代码进行变基——有关详细信息,请参阅下文。
重新调整您的更改。在您开发功能的同时,其他人可能正在对 KStar 进行更改。变基正在更新您的 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
如果 rebase 出现问题,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 部分的区别在于最后 2 个命令:使用“git merge master”而不是“git rebase 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
等中找到。它们尝试验证最小类集的行为,并支持功能开发。
UI 测试可以在kstars_lite_ui
和kstars_ui
中找到。他们像最终用户从用户界面执行用例一样执行用例,并专注于视觉反馈的可用性和程序的稳定性。
决定新的单一测试将驻留在Tests
中的位置。 KStars 类应该位于与其来源匹配的文件夹中:例如,辅助类测试位于auxiliary
中。根据正在测试的系统部分,找到合适的测试位置。例如,名为thatkstarscategory
的文件夹。
创建一个新的单一测试类,或将现有的单一测试复制粘贴到新的测试类中。检查Tests/kstars_ui_tests/kstars_ui_tests.h
作为示例。将.h
和.cpp
文件命名为“test[lowercase kstars class]”(例如“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
中找到您的测试类。
关于 UI 测试的一件重要的事情是它们必须全部使用QStandardPaths::setTestModeEnabled(true)
,以便它们使用最初为空的单独用户配置来执行。因此,用户界面测试需要进行初步设置才能正常运行,例如使用新的配置向导或设置地理位置。因此,您需要在TestKStarsStartup
执行之后在main()
中的Tests/kstars_ui_tests/kstars_ui_tests.cpp
中添加测试的执行。
关于 QTest 的第二个重要的事情通常是测试函数没有返回代码。因此,需要编写宏来分解重复的代码。您会在kstars_ui_tests
测试类的头文件中找到许多现有的宏,用于检索小工具、单击按钮或填充QComboBox
小部件...
KStars 界面的第三个重要之处是它混合了 KDE 和 Qt UI 元素。因此,有时测试需要将验证代码移至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]
Csaba Kertesz [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 数据由 Christian Dersch 从 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 链接到基特峰国家天文台高级观察员计划的图像。 如果您对天文摄影感兴趣,您可以考虑查看他们的计划:http://www.noao.edu/outreach/aop/
README.images 中列出了程序中使用的每个图像的学分
KStars 是一种爱的劳动。 它一开始只是我的个人爱好,但在我第一次在 Sourceforge 上发布代码后不久,它就开始吸引其他开发人员。 我对我的合作开发人员印象深刻并感到非常满意。 我找不到比这更有才华、更友善的团队了。不言而喻,如果没有他们的努力,KStars 不可能有今天的成就。 我们共同创造了令我们所有人都感到自豪的事情。
我们(主要)使用两本书作为编写 KStars 中使用的算法的指南:
彼得·达菲特·史密斯的《用计算器进行实用天文学》
Jean Meeus 的《天文算法》
感谢 Qt 和 KDE 的开发者,他们无与伦比的 API 使 KStars 成为可能。 还要感谢 KDE 翻译团队的不懈努力,他们将 KStars 带给了全球受众。
感谢 KDevelop 留言板和 irc.kde.org 上的每个人回答我常见的问题。
还要感谢许多提交错误报告或其他反馈的用户。
你还在读这个吗? :) 嗯,就是这样。 希望您喜欢 KStars!
贾森·哈里斯 [email protected]
KStars 开发邮件列表 [email protected]
向我们发送想法和反馈!