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]
向我們發送想法和回饋!