|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| .reuse/ | H | 13-Nov-2021 | - | 17 | 13 |
| LICENSES/ | H | 03-May-2022 | - | | |
| Tests/ | H | 03-May-2022 | - | 295,887 | 20,721 |
| appimage/ | H | 13-Nov-2021 | - | 164 | 162 |
| cmake/modules/ | H | 13-Nov-2021 | - | 878 | 737 |
| datahandlers/ | H | 03-May-2022 | - | 542 | 275 |
| doc/ | H | 03-May-2022 | - | 12,500 | 11,576 |
| docker/ | H | 13-Nov-2021 | - | 97 | 86 |
| kstars/ | H | 03-May-2022 | - | 691,307 | 571,424 |
| packaging/ | H | 13-Nov-2021 | - | 4,893 | 2,884 |
| po/ | H | 03-May-2022 | - | 6,270,286 | 4,973,412 |
| snap/ | H | 13-Nov-2021 | - | 406 | 369 |
| tools/ | H | 13-Nov-2021 | - | 485 | 448 |
| utils/ | H | 13-Nov-2021 | - | 60 | 36 |
| .clang-format | H A D | 13-Nov-2021 | 1.6 KiB | 54 | 52 |
| .gitignore | H A D | 13-Nov-2021 | 1.5 KiB | 90 | 79 |
| .gitlab-ci.yml | H A D | 13-Nov-2021 | 3.8 KiB | 122 | 111 |
| .krazy | H A D | 13-Nov-2021 | 54 | 3 | 1 |
| AUTHORS | H A D | 13-Nov-2021 | 1.1 KiB | 35 | 29 |
| ChangeLog | H A D | 13-Nov-2021 | 400.3 KiB | 4,452 | 4,284 |
| INSTALL | H A D | 13-Nov-2021 | 1.3 KiB | 49 | 35 |
| Mainpage.dox | H A D | 13-Nov-2021 | 8.4 KiB | 133 | 113 |
| README.android | H A D | 13-Nov-2021 | 3.3 KiB | 69 | 54 |
| README.customize | H A D | 13-Nov-2021 | 4.5 KiB | 121 | 91 |
| README.ephemerides | H A D | 13-Nov-2021 | 5 KiB | 132 | 102 |
| README.i18n | H A D | 13-Nov-2021 | 2.8 KiB | 60 | 45 |
| README.images | H A D | 13-Nov-2021 | 8.4 KiB | 255 | 221 |
| README.md | H A D | 13-Nov-2021 | 23.2 KiB | 480 | 372 |
| README.planetmath | H A D | 13-Nov-2021 | 5.5 KiB | 113 | 92 |
| README.timekeeping | H A D | 13-Nov-2021 | 6 KiB | 114 | 93 |
| TODO | H A D | 13-Nov-2021 | 113 | 4 | 2 |
| config-kstars.h.cmake | H A D | 13-Nov-2021 | 1.2 KiB | 45 | 30 |
| org.kde.kf5auth.kstars.actions | H A D | 13-Nov-2021 | 8.2 KiB | 96 | 94 |
| org.kde.kstars.appdata.xml | H A D | 13-Nov-2021 | 71.8 KiB | 500 | 499 |
| timekeeping.dox | H A D | 13-Nov-2021 | 5.7 KiB | 110 | 91 |
README.android
README.customize
1KStars Customization Guide.
2copyright 2002 by Jason Harris and the KStars team
3This document is licensed under the terms of the GNU Free
4Documentation License
5---------------------------
6
7This document provides a brief overview of the many advanced customization
8features provided in the program. If you have a useful customization that
9you would like to share with the KStars community, please consider
10submitting it to kstars@30doradus.org; we may incorporate your data into
11a future version of KStars!
12
13
141. Color Schemes
15
16In the "Colors" tab of the KStars Configuration window, the colors of
17all items drawn in the sky map can be customized. At any time,
18you can save the current collection of colors into a custom color scheme.
19Saved schemes will appear in the listbox on the right of the Colors
20tab, as well as in the "Settings|Color Schemes" menu. In addition,
21the custom color schemes are automatically reloaded when KStars starts up,
22so they will always be available.
23
24You can remove a custom color scheme at any time by highlighting it in the
25listbox and then pressing the "remove" button.
26
27
282. Geographic Locations
29
30The Change Location window allows you to set the geographic location
31by choosing from a list of over 2000 predefined cities around the world.
32If you would like to use a location that is not on the list, enter the
33relevant information (longitude, latitude, city name, province name, and
34country name), then press "Add to list". All fields must be filled, except
35the optional province field.
36
37In addition, you can also modify the values for an existing city, by
38simply changing the values in the window, and adding it to the list.
39
40
413. Object Catalogs
42
43You can easily add your own object data to KStars. First, prepare the
44object catalog data file. Each line in the file should contain the
45following space-separated fields:
46
47for stars:
48type(0 for stars), RA, Dec, mag, SpType, name(optional)
49
50other types:
51type(3-8), RA, Dec, mag (optional), flux(optional), name(optional)
52
53The types are:
540: star
551: star (in object catalog...probably don't want to use this)
562: planet (don't use this in custom catalog)
573: open cluster
584: globular cluster
595: gaseous nebula
606: planetary nebula
617: supernova remnant
628: galaxy
6318: radio source
64
65The SpType is a short string for the spectral type. For example, "B5" or "G2"
66The coordinates should be given as floating-point values, in the J2000.0 epoch.
67The name can be anything you wish. If the name is more than one word, it
68must be enclosed in quotation marks.
69
70Once you have constructed a custom data file, open the Configuration window
71to the Catalogs tab, and press the "Add Custom Catalog" button. A popup
72window appears in which you can specify a name for the catalog, and the
73name of the file (including the path).
74
75When you press Ok, KStars will attempt to read the lines of your data file.
76It will report any problems, and if any lines at all were successfully parsed,
77you are given a choice to accept the data file (ignoring any unparsed lines),
78or to cancel the operation to attempt to resolve the problems first.
79
80Once the data file has been accepted, your custom catalog will be loaded on
81startup along with the standard catalogs, and there will be a checkbox in the
82Configuration window to toggle the display of your catalog objects.
83
84You can remove custom catalogs by highlighting its checkbox in the
85Configuration window, and pressing the "Remove Custom Catalog" button (this
86button is only active if a custom catalog is highlighted in the list
87of checkboxes).
88
89+ Radio Sources Catalogs:
90
91For radio sources catalogs, you must include the flux frequency and units. For example:
92
93# Flux Frequency: 1420 Mhz
94# Flux Unit: mJy
95
96The following is a simple catalog file:
97
98# Name: my_catalog
99# Prefix: et_radio
100# Color: #00ff00
101# Epoch: 2000
102# Flux Frequency: 1420 Mhz
103# Flux Unit: mJy
104# ID RA Dc Tp Mj Mn PA Nm Flux
105J0001 12:31:23.1 +11:29:34 18 180.60 360.30 45 my_radio_source 70
106
1074. URL Links
108
109You can add your own internet links to any object by selecting the
110"Add Link..." item from the object's right-click popup menu. A
111window opens in which you can enter text to appear in the new menu item,
112and the URL which should be opened. You should also specify whether the
113link points to an image or an HTML page (Image links open the Image Viewer,
114HTML links open a Konqueror window). The menu text is filled
115with a default string at first; feel free to modify it.
116
117Note that the URL can point to a file on your hard drive, so this is an
118interesting way to catalog your own astrophotos, or perhaps to keep
119observing notes about different objects...
120
121
README.ephemerides
1KStars keeps track of thousands of comets and asteroids.
2It uses orbital data published by NASA's Jet Propulsion
3Laboratory (JPL); these data are known as "orbital elements".
4Because these small bodies are easily perturbed as they
5wander about the solar system, their orbital elements must
6be updated regularly. Updating the elements will also add
7any recently-discovered bodies.
8
9
10How to update the orbital elements of comets and asteroids:
11
12-=( 1 )=- The Easy Way.
13
14Start KStars, then open the "Get New Stuff" Tool by selecting
15"Download Data..." from the File menu, or by pressing Ctrl+D.
16
17If a new "ephemerides" package is available, select it and press
18the Install button. Voila!
19
20If the "ephemerides" package available from the "Get New Stuff"
21Tool is too old, you can use the menu items under
22"Settings" > "Updates" to download the last ephemerides from
23NASA's Jet Propulsion Laboratory website.
24
25
26-=( 2 )=- Doing it Manually.
27
28It is possible that the ephemerides package is not completely
29up-to-date. Fortunately, it's relatively simple to update the
30files manually whenever you want.
31
32::NOTE:: If you find that the ephemerides package is woefully
33outdated, and you follow this manual-install procedure, PLEASE
34send your final comets.dat and asteroids.dat files to
35kstars-devel@kde.org! Now is your chance to be a KStars Hero!
36
37
38Step 1: The Comets
39
40You can use the following command to download comets.dat file
41from JPL website :
42wget -O comets.dat --post-data="obj_group=all&obj_kind=com&obj_numbered=all&OBJ_field=0&OBJ_op=0&OBJ_value=&ORB_field=0&ORB_op=0&ORB_value=&combine_mode=AND&c1_group=OBJ&c1_item=Af&c1_op=!%3D&c1_value=D&c2_group=OBJ&c2_item=Ae&c2_op=!%3D&c2_value=SOHO&c_fields=AcBdBiBgBjBlBkBqBbAiAjAgAkAlApAqArAsBsBtCh&table_format=CSV&max_rows=10&format_option=full&query=Generate%20Table&.cgifields=format_option&.cgifields=field_list&.cgifields=obj_kind&.cgifields=obj_group&.cgifields=obj_numbered&.cgifields=combine_mode&.cgifields=ast_orbit_class&.cgifields=table_format&.cgifields=ORB_field_set&.cgifields=OBJ_field_set&.cgifields=preset_field_set&.cgifields=com_orbit_class" http://ssd.jpl.nasa.gov/sbdb_query.cgi
43
44Delete or comment (with a '#') the first line.
45
46Finally, copy your modified "comets.dat" to
47~/.kde/share/apps/kstars/ (for a single-user install) or
48$KDEDIR/share/apps/kstars/ (for a system-wide install).
49
50
51Step 2: The Asteroids
52
53You can use the following command to download asteroids.dat
54file from JPL website :
55wget -O asteroids.dat --post-data="obj_group=all&obj_kind=ast&obj_numbered=num&OBJ_field=0&ORB_field=0&c1_group=OBJ&c1_item=Ai&c1_op=%3C&c1_value=12&c_fields=AcBdBiBhBgBjBlBkBmBqBbAiAjAgAkAlApAqArAsBsBtCh&table_format=CSV&max_rows=10&format_option=full&query=Generate%20Table&.cgifields=format_option&.cgifields=field_list&.cgifields=obj_kind&.cgifields=obj_group&.cgifields=obj_numbered&.cgifields=combine_mode&.cgifields=ast_orbit_class&.cgifields=table_format&.cgifields=ORB_field_set&.cgifields=OBJ_field_set&.cgifields=preset_field_set&.cgifields=com_orbit_class" http://ssd.jpl.nasa.gov/sbdb_query.cgi
56
57Delete or comment (with a '#') the first line.
58
59Finally, copy your modified "asteroids.dat" to
60~/.kde/share/apps/kstars/ (for a single-user install) or
61$KDEDIR/share/apps/kstars/ (for a system-wide install).
62
63
64-=( 3 )=- Another way.
65
66The last method is to point your browser to the following
67URL:
68http://ssd.jpl.nasa.gov/sbdb_query.cgi
69and generate the file using the form
70
71You must select the following columns to make the file
72compatible with kstars :
73
74- for comets
751 full name
762 modified julian day of orbital elements
773 perihelion distance
784 eccentricity of orbit
795 inclination angle of orbit in degrees
806 argument of perihelion in degrees
817 longitude of the ascending node
828 time of perihelion passage
839 orbit solution ID
8410 absolute magnitude
8511 slope parameter
8612 Near-Earth Object (NEO) flag
8713 comet total magnitude parameter
8814 comet nuclear magnitude parameter
8915 object diameter
9016 object bi/tri-axial ellipsoid dimensions
9117 geometric albedo
9218 rotation period
9319 orbital period
9420 earth minimum orbit intersection distance
9521 orbit classification
96
97-for asteroids
981 full name
992 Modified Julian Day of orbital elements
1003 perihelion distance
1014 semi-major axis
1025 eccentricity of orbit
1036 inclination angle of orbit in degrees
1047 argument of perihelion in degrees
1058 longitude of the ascending node in degrees
1069 mean anomaly
10710 time of perihelion passage
10811 orbit solution ID
10912 absolute magnitude
11013 slope parameter
11114 Near-Earth Object (NEO) flag
11215 comet total magnitude parameter
11316 comet nuclear magnitude parameter
11417 object diameter
11518 object bi/tri-axial ellipsoid dimensions
11619 geometric albedo
11720 rotation period
11821 orbital period
11922 earth minimum orbit intersection distance
12023 orbit classification
121
122The advantage of this method is that you can play with
123several filters and get a file containing exactly what
124you want.
125
126Don't forget to delete or comment (with a '#') the first
127line.
128
129Finally, copy your files to
130~/.kde/share/apps/kstars/ (for a single-user install) or
131$KDEDIR/share/apps/kstars/ (for a system-wide install).
132
README.i18n
1README.i18n: Instructions for Translating KStars
2copyright 2002 by Jason Harris and the KStars team.
3This document is licensed under the terms of the GNU Free Documentation License
4-------------------------------------------------------------------------------
5
6
7Some parts of i18n in KStars are a bit complicated, so we provide
8this document to answer some questions you might have.
9
10+ Strings in data files.
11
12 KStars has many data files that contain strings that you may want
13 to translate: cities.dat, cnames.dat, image_url.dat, info_url.dat
14
15 We have modified our Makefile to automatically parse these files
16 and generate a "dummy" source file that only contains the translatable
17 strings from our data files. The file is called "kstars-i18n.cpp".
18 Once the kstars.pot file is generated, this file is destroyed.
19
20 The advantage to this is that it requires no special effort on the
21 part of the translation teams; the data file strings are automatically
22 added to our POT file. The disadvantage is that our POT file is now
23 quite large! Especially because of the city names. Probably, most of
24 the city names won't need to be translated. We added a comment to
25 these strings indicating that they are optional.
26
27 cnames.dat contains constellation names, in Latin. We include
28 an option in the program to display "Localized" names instead of
29 Latin names; if you want this to work for your language, you'll
30 need to provide translations for the strings in the POT file which
31 have a comment like: "Constellation name (optional)".
32
33
34+ Alternate internet URL lists
35
36 KStars provides many internet links to images and information on
37 specific objects in the sky. The links appear in an object's
38 right-click popup menu. The POT file already provides the link
39 text for translation, but there's still a problem: the websites
40 that the links go to are all in English!
41
42 If you want to provide internet links that point to websites
43 in your native language, you can. Add a file to the SVN tree at:
44 l10n-kde4/<lang>/data/kdeedu/kstars/info_url.dat (where <lang> is
45 the two-letter code for your language). This file should contain
46 the list of internet links you want KStars to use when localized
47 for your language. You can look at the default info_url.dat to
48 figure out the file format; briefly, it's a colon-delimited line
49 with fields: object name, link text, link URL
50
51 Note that your alternate info_url.dat file will completely replace
52 the default, so if you want to include some links from the original,
53 you will need to copy them over. Some of the sites we link to provide
54 versions of their pages in other languages (e.g., seds.org). So
55 for these sites, you can just modify the URLs from the default file.
56
57 (you can also provide a localized version of image_url.dat, but this
58 is probably unnecessary since these are only image links).
59
60
README.images
1
2 Credits for Images used in KStars
3
4 Jason Harris and the KStars team
5
6---------------------------------------------
7
8KStars uses images in the skymap that are under copyright.
9All of the images that ship with KStars are in the public
10domain or have a permissive license. Some images which are
11available via the "Get New Stuff" tool are free for
12non-commercial use only; these images are listed here as well.
13When required, we have obtained permission from the image's
14author. For each image, we credit the author or source and
15provide a link to their website, when available.
16
17Key:
18FFNP: Free for non-profit/non-commercial use
19FFE: Free for educational use
20FWC: Free to use, with credit
21UWP: Used with Permission
22PD: Public Domain
23CR: Authorship Credit Requested
24GPL: Released under the General Public License
25
26DSS: Digitized Sky Survey
27KPNO AOP: Kitt Peak Nat'l Observatory Advanced Observing Program
28NOAO: National Optical Astronomical Observatories
29AURA: Association of Universities for Research in Astronomy
30NSF: National Science Foundation
31ESO/VLT: European Southern Observatory / Very Large Telescope
32ING: Isaac Newton Group of Telescopes (La Palma)
332MASS: 2-Micron All-Sky Survey
34NASA/GSFC:Nat'l Aeronautics and Space Admin./Goddard Spaceflight Center
35
36
37Messier Catalog Inline Image Credits (these are not shipped
38with KStars; they are available via the "Get New Stuff" tool):
39
40M 1: Till Credner and Sven Kohle (FFNP)
41M 2: Doug Williams, N. A.Sharp NOAO/AURA/NSF (FFE/FFNP)
42M 3: KPNO AOP (FFNP)
43M 4: DSS (FFE/FFNP)
44M 5: KPNO AOP (FFNP)
45M 6: N. A. Sharp, Mark Hanna, AURA/NOAO/NSF (FFE/FFNP)
46M 7: no image
47M 8: KPNO AOP (FFNP)
48M 9: DSS (FFE/FFNP)
49M 10: Till Credner and Sven Kohle (FFNP)
50M 11: 2MASS (FWC)
51M 12: KPNO AOP (FFNP)
52M 13: KPNO AOP (FFNP)
53M 14: DSS (FFE/FFNP)
54M 15: KPNO AOP (FFNP)
55M 16: KPNO AOP (FFNP)
56M 17: KPNO AOP (FFNP)
57M 18: no image
58M 19: DSS (FFE/FFNP)
59M 20: KPNO AOP (FFNP)
60M 21: no image
61M 22: N. A. Sharp NOAO/AURA/NSF (FFE/FFNP)
62M 23: no image
63M 24: no image
64M 25: no image
65M 26: no image
66M 27: ESO/VLT (FFE/FFNP)
67M 28: 2MASS (FWC)
68M 29: no image
69M 30: N. A. Sharp NOAO/AURA/NSF (FFE/FFNP)
70M 31: Jason Ware (UWP)
71M 32: DSS (FFE/FFNP)
72M 33: Brad Wallis and Robert Provin (FFNP)
73M 34: no image
74M 35: no image
75M 36: no image
76M 37: no image
77M 38: no image
78M 39: no image
79M 40: no image
80M 41: no image
81M 42: Brad Wallis and Robert Provin
82M 43: no image
83M 44: no image
84M 45: Dean Jacobson (UWP)
85M 46: no image
86M 47: no image
87M 48: no image
88M 49: DSS (FFE/FFNP)
89M 50: Till Credner and Sven Kohle (FFNP)
90M 51: ING (FFNP)
91M 52: no image
92M 53: DSS (FFE/FFNP)
93M 54: DSS (FFE/FFNP)
94M 55: DSS (FFE/FFNP)
95M 56: DSS (FFE/FFNP)
96M 57: HST image (FWC)
97M 58: KPNO AOP (FFNP)
98M 59: N.A.Sharp AURA/NOAO/NSF (FFE/FFNP)
99M 60: DSS (FFE/FFNP)
100M 61: KPNO AOP (FFNP)
101M 62: 2MASS (FWC)
102M 63: KPNO AOP (FFNP)
103M 64: KPNO AOP (FFNP)
104M 65: KPNO AOP (FFNP)
105M 66: KPNO AOP (FFNP)
106M 67: Jan Wisniewski (FFNP)
107M 68: DSS (FFE/FFNP)
108M 69: DSS (FFE/FFNP)
109M 70: DSS (FFE/FFNP)
110M 71: Till Credner and Sven Kohle (FFNP)
111M 72: DSS (FFE/FFNP)
112M 73: DSS (FFE/FFNP)
113M 74: DSS (FFE/FFNP)
114M 75: DSS (FFE/FFNP)
115M 76: Scott J. Wolk and Nancy R. Adams (FFE/FFNP)
116M 77: KPNO AOP (FFNP)
117M 78: KPNO AOP (FFNP)
118M 79: DSS (FFE/FFNP)
119M 80: DSS (FFE/FFNP)
120M 81: N.A.Sharp AURA/NOAO/NSF (FFE/FFNP)
121M 82: KPNO AOP (FFNP)
122M 83: ESO/VLT (FWC)
123M 84: Grasslands Observatory (UWP)
124M 85: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
125M 86: Grasslands Observatory (UWP)
126M 87: KPNO AOP (FFNP)
127M 88: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
128M 89: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
129M 90: KPNO AOP (FFNP)
130M 91: KPNO AOP (FFNP)
131M 92: DSS (FFE/FFNP)
132M 93: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
133M 94: KPNO AOP (FFNP)
134M 95: KPNO AOP (FFNP)
135M 96: KPNO AOP (FFNP)
136M 97: KPNO AOP (FFNP)
137M 98: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
138M 99: KPNO AOP (FFNP)
139M 100: KPNO AOP (FFNP)
140M 101: N.A. Sharp AURA/NOAO/NSF
141M 102: no image
142M 103: Hillary Mathis, N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
143M 104: ESO/VLT (FWC)
144M 105: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
145M 106: KPNO AOP (FFNP)
146M 107: DSS (FFE/FFNP)
147M 108: KPNO AOP (FFNP)
148M 109: KPNO AOP (FFNP)
149M 110: N. A. Sharp AURA/NOAO/NSF (FFE/FFNP)
150
151
152Planets Inline Image Credits:
153Mercury: NASA/GSFC (PD/CR)
154Venus: NASA/GSFC (PD/CR)
155Moon: based on a photo contributed by Frank Stefani (GPL)
156Mars: NASA and Hubble Heritage team (PD/CR)
157Jupiter: NASA/GSFC (PD/CR)
158Saturn: NASA and Hubble Heritage team (PD/CR)
159Uranus: Erich Karkoschka (University of Arizona) and NASA (PD/CR)
160Neptune: NASA Voyager 2 (PD/CR)
161Pluto: NASA/GSFC (PD/CR)
162
163
164Credits and permissions, listed by author/source:
165
166
167Individual Authors:
168
169Till Credner and Sven Kohle: http://www.allthesky.com
170Images copyright Till Credner and Sven Kohle. They may be used for
171private and non-profit educational purposes.
172
173Martin Germano: http://home.earthlink.net/~mcgermano/
174Images copyright Martin Germano. Used with permission.
175
176Dean Jacobson: http://www.astrophoto.net
177Images copyright Dean Jacobson. Used with permission.
178
179Brad Wallis and Robert Provin:
180http://voltaire.csun.edu/wallis_provin.html
181Images copyright Brad Wallis and Robert Provin. They may be used
182for non-profit purposes, as long as proper credit is given.
183
184Jason Ware: http://www.galaxyphoto.com
185Images copyright Jason Ware. Used with permission.
186
187Jan Wisniewski: http://jwisn.freeyellow.com/list.htm
188Images copyright Jan Wisniewski. They may be used
189for non-commercial purposes, as long as proper credit is given.
190
191Scott J. Wolk and Nancy R. Adams:
192http://hea-www.harvard.edu/~swolk/pretty.html
193Image copyright Scott J. Wolk and Nancy R. Adams. They may be used
194for non-commercial purposes, as long as proper credit is given.
195
196
197Organizations:
198
199DSS: http://archive.stsci.edu/dss/index.html
200The Digitized Sky Survey is in the public domain. The DSS
201was produced at the Space Telescope Science Institute under U.S.
202Government grant NAG W-2166. The images of these surveys are based
203on photographic data obtained using the Oschin Schmidt Telescope on
204Palomar Mountain and the UK Schmidt Telescope. The plates were
205processed into the present compressed digital form with the
206permission of these institutions.
207
208KPNO AOP: http://www.noao.edu/outreach/aop/
209The Advanced Observing Program at Kitt Peak National Observatory
210is a public program in which participants use the high-tech
211resources of the Kitt Peak Visitor Center Observatory to create
212their own film or digital images of objects in the night sky. All
213images are freely available for non-commercial use in electronic
214form, but may not be printed on paper without written permission.
215
216ESO/VLT: http://www.eso.org/outreach/gallery/astro/
217Images taken using the European Southern Observatory's
218Very Large Telescope in Chile. Images published in the ESO
219Image Gallery may be reproduced for non-commercial purposes.
220
221HST Public Pictures: http://oposite.stsci.edu/pubinfo/pictures.html
222HST Image Gallery: http://hubble.stsci.edu/gallery/
223Hubble Heritage Project: http://heritage.stsci.edu/
224Images published by the Space Telescope Science Institute are
225in the public domain.
226
227Grasslands Observatory: http://www.3towers.com/index.htm
228Owned by Tim Hunter, who operates the observatory with
229James McGaha. Images of the entire Messier catalog as well as many
230NGC objects are published on their website. Images in KStars are
231used with permission.
232
233Isaac Newton Group of Telescopes Gallery:
234http://www.ing.iac.es/PR/science/pictures.html
235Images courtesy of the Isaac Newton Group of Telescopes, La Palma.
236
237NOAO/AURA/NSF Image Gallery:
238http://www.noao.edu/image_gallery/
239NOAO allows reproduction, authorship of derivative works, and other
240transformations of the original work strictly for educational and
241research purposes without further permission.
242
2432MASS Messier objects:
244http://www.ipac.caltech.edu/2mass/gallery/messiercat.html
245Images obtained as part of the Two Micron All Sky Survey (2MASS),
246a joint project of the University of Massachusetts and the Infrared
247Processing and Analysis Center/California Institute of Technology,
248funded by the National Aeronautics and Space Administration and the
249National Science Foundation.
250
251Stellarium:
252http://bazaar.launchpad.net/~stellarium/stellarium/trunk/files/head:/skycultures/western/
253Western Skyculture images obtained from Stellarium as a part of
254the Constellation Art project in Google Summer of Code 2015.
255
README.md
1# A Desktop Planetarium for KDE
2
3KStars is free, open source, cross-platform Astronomy Software.
4
5It provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time. The display includes up to 100 million stars, 13,000 deep-sky objects,all 8 planets, the Sun and Moon, and thousands of comets, asteroids, supernovae, and satellites.
6
7For students and teachers, it supports adjustable simulation speeds in order to view phenomena that happen over long timescales, the KStars Astrocalculator to predict conjunctions, and many common astronomical calculations. For the amateur astronomer, it provides an observation planner, a sky calendar tool, and an FOV editor to calculate field of view of equipment and display them. Find out interesting objects in the "What's up Tonight" tool, plot altitude vs. time graphs for any object, print high-quality sky charts, and gain access to lots of information and resources to help you explore the universe!
8
9Included with KStars is Ekos astrophotography suite, a complete astrophotography solution that can control all INDI devices including numerous telescopes, CCDs, DSLRs, focusers, filters, and a lot more. Ekos supports highly accurate tracking using online and offline astrometry solver, autofocus and autoguiding capabilities, and capture of single or multiple images using the powerful built in sequence manager.
10
11## Copyright
12
13Copyright (c) 2001 - 2020 by The KStars Team:
14
15KStars is Free Software, released under the GNU Public License. See COPYING for GPL license information.
16
17## Downloads
18
19KStars is available for Windows, MacOS, and Linux. You can download the latest version from [KStars official website](https://edu.kde.org/kstars).
20
21On Linux, it is available for most Linux distributions.
22
23Latest stable version is v3.4.2
24
25## Important URLs and files.
26
27* The [KStars homepage](https://edu.kde.org/kstars)
28* KStars [Git Repository](https://invent.kde.org/education/kstars)
29* KStars [Web Chat](https://webchat.kde.org/#/room/#kstars:kde.org)
30* Forum [where KStars is often discussed](https://indilib.org/forum.html)
31
32## KStars documentation
33
34The KStars handbook can be found in your $(KDEDIR)/share/doc/HTML/<lang>/kstars/
35directory. You can also easily access it from the Help menu, or by pressing
36the [F1] key, or by visiting https://docs.kde.org/?application=kstars
37Unfortunately, it's a bit out-of-date. We welcome volunteers to help
38update it.
39
40In addition, there are the following README files:
41
42README: This file; general information
43README.planetmath: Explanation of algorithms used to compute planet positions
44README.customize: Advanced customization options
45README.images: Copyright information for images used in KStars.
46README.i18n: Instructions for translators
47
48## Development
49
50Code can be cloned, viewed and merge requests can be made via the [KStars repository](https://invent.kde.org/education/kstars). If you are new to remote git repositories, please see the Git Tips section below.
51Note: Previously KStars used Phabricator for its merge requests. That system is no longer in use.
52
53### Integrated Development Environment IDE
54
55If you plan to develop KStars, it is highly recommended to utilize an IDE. You can use any IDE of your choice, but QtCreator(https://www.qt.io/product) or KDevelop(https://www.kdevelop.org) are recommended as they are more suited for Qt/KDE development.
56
57To open KStars in QtCreator, select the CMakeLists.txt file in the KStars source folder and then configure the build location and type.
58
59### Building
60
611. Prerequisite Packages
62
63To build and develop KStars, several packages may be required from your distribution. Here's a list.
64
65* Required dependencies
66 * GNU Make, GCC -- Essential tools for building
67 * cmake -- buildsystem used by KDE
68 * Qt Library > 5.9.0
69 * Several KDE Frameworks: KConfig, KDocTools, KGuiAddons, KWidgetsAddons, KNewStuff, KI18n, KInit, KIO, KXmlGui, KPlotting, KIconThemes
70 * eigen -- linear algebra library
71 * zlib -- compression library
72 * StellarSolver -- see [https://github.com/rlancaste/stellarsolver](https://github.com/rlancaste/stellarsolver)
73
74* Optional dependencies
75 * libcfitsio -- FITS library
76 * libindi -- Instrument Neutral Distributed Interface, for controlling equipment.
77 * xplanet
78 * astrometry.net
79 * libraw
80 * wcslib
81 * libgsl
82 * qtkeychain
83
84
852. Installing Prerequisites
86
87Debian/Ubuntu
88
89The apt-add-respository command is needed for the apt-get's libstellarsolver-dev. Alternatively, you can skip the apt-add-repository, remove the libstellarsolver-dev from the apt-get, and build & install stellarsolver from https://github.com/rlancaste/stellarsolver.
90```
91sudo apt-add-repository ppa:mutlaqja/ppa
92sudo apt-get -y install build-essential cmake git libstellarsolver-dev libeigen3-dev libcfitsio-dev zlib1g-dev libindi-dev extra-cmake-modules libkf5plotting-dev libqt5svg5-dev libkf5xmlgui-dev libkf5kio-dev kinit-dev libkf5newstuff-dev kdoctools-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
93```
94
95Fedora
96```
97yum install cfitsio-devel eigen3-devel stellarsolver-devel cmake extra-cmake-modules.noarch 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-qtsvg-devel wcslib-devel xplanet zlib-devel
98```
99
1003. Compiling
101
102Open a console and run in the following commands:
103```
104mkdir -p ~/Projects
105git clone https://invent.kde.org/education/kstars.git
106mkdir -p kstars-build
107cd kstars-build
108cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo ../kstars
109make -j8
110sudo make install
111```
112
113To run KStars, simply type **kstars** in the terminal.
114
115### Code Style
116
117KStars uses [Artistic Style](http://astyle.sourceforge.net) to format all the C++ source files. Please make sure to apply the following astyle rules to any code that is submitted to INDI. On Linux, you can create ***~/.astylerc*** file containing the following rules:
118```
119--style=allman
120--align-reference=name
121--indent-switches
122--indent-modifiers
123--indent-classes
124--pad-oper
125--indent-col1-comments
126--lineend=linux
127--max-code-length=124
128```
129Some IDEs (e.g. QtCreator) support automatic formatting for the code every time you save the file to disk.
130
131### Making Updates to the Handbook
132
133On linux run the following to install the necessary programs:
134
135```
136sudo apt-get install docbook docbook-utils
137```
138
139The source for the handbook is in kstars/doc.
140You can edit those files, include them in commits and MRs like you would c++ files (see below).
141You could figure out the markup by example, or learn from [online doc for docbook](https://opensource.com/article/17/9/docbook).
142In general, it is best to first copy the entire kstars/doc directory to a temporary directory, and edit and generate the handbook there,
143because if you ran meinproc in the main source directory, you would generate many .html files there,
144and you don't want to commit the generated files to your git repository.
145
146```
147cp -pr kstars/doc ~/DOCBOOK
148cd ~/DOCBOOK
149meinproc5 index.docbook
150```
151
152The above should generate html files. Then, in a browser, you can simply open DOCBOOK/index.html and navigate your way to the part you want, e.g. just type something similar to this in the url bar of chrome: file:///home/YOUR_USER_NAME/DOCBOOK/doc/tool-ekos.html
153Make changes to some of the .docbook files in ~/DOCBOOK/*.docbook. Regenerate the html files, and view your changes in the browser, as before. Iterate.
154
155To check syntax, you might want to run:
156
157```
158checkXML5 index.docbook
159```
160
161Once you're happy, copy your modified files back to kstars/doc, and treat the edited/new files as usual with git,
162including your modified files in a new commit and eventually a new merge request.
163
164### Merge Request Descriptions
165
166See the section below, Git Tips, on technical specifics of how to generate a Merge Request.
167In the process of making the request, you will need to describe the request.
168Please use a format similar to [this one](https://invent.kde.org/education/kstars/-/merge_requests/33)
169which has sections for a summary of what was done, what was modified in each file, other relevant notes, and how to test your changes.
170
171### Git Tips
172
173You must be familiar with git to make changes to KStars, and this is not the place for such a tutorial. There
174are many excellent resources for that on the web. The paragraph below, though, will give an overview of one way
175to make a Merge Request, given you already have sufficient git experience to clone KStars, make a local branch,
176modify the code as you like, commit your changes to your local branch, and test your code thoroughly.
177
178Here's one good resource for a [fork-branch-git-workflow to make KStars changes](https://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow). The steps below are inspired by that page.
179
180**One-time KStars git environment setup.**
181
182* [Make your KDE identity](https://community.kde.org/Infrastructure/Get_a_Developer_Account)
183* **Login.** Go to the [KStars gitlab page](https://invent.kde.org/education/kstars) and login in the upper right corner.
184* **Fork the project.** Then, still on the KStars gitlab page, Click FORK in the upper right hand corner, to create your own fork of the project.
185* **Copy your URL.** Note the url of your fork. It should be https://invent.kde.org/YOUR_KDE_NAME/kstars
186* **Clone KStars.** Back on your computer run these commands
187 * mkdir -p ~/Projects
188 * cd ~/Projects
189 * git clone https://invent.kde.org/YOUR_KDE_NAME/kstars
190 * cd kstars
191* **Add your upstream.** Add the KStars main repo to your forked repo.
192 * git remote add upstream https://invent.kde.org/education/kstars
193
194You are set up now.
195
196**Steps used for each change.** After the one-time setup (above), the steps below could be used for each new feature submission. In summary, you will make a feature branch in your local repository, make your desired changes there and test, push them to your fork, create a request to merge your fork with the main KStars repo, wait for feedback, and possibly iterate on your changes hoping for approval from an authority.
197
198* **Create your feature branch.**
199 * git checkout -b YOUR_BRANCH_NAME
200* **Make your changes**
201* **Commit your changes**
202 * git commit -a
203* **Push changes to your forked repo.**
204 * git push origin YOUR_BRANCH_NAME
205* **Create a Merge Request**
206 * Use your browser to visit your forked repo at https://invent.kde.org/YOUR_KDE_NAME/kstars
207 * You should see an option to create a Merge Request for YOUR_BRANCH_NAME. Fill in the details (see the above section).
208 * You should be able to see a new URL dedicated to that Merge Request.
209* **Make Some Changes.** You may get requests to modify some of your code.
210 * If so, you simply go back to your local branch, make and test your changes.
211 * Commit your changes as above, inside your branch, with: git commit -a
212 * Push your branch's changes to your forked repo as above with: git push origin YOUR_BRANCH_NAME
213 * Your changes should automatically be added to your Merge Request. Check the Merge Request's page to be sure.
214 * You may need to rebase your code--see below for details.
215
216**Rebasing your changes.** Others may be making changes to KStars at the same time you are working on your feature.
217Rebasing is updating your version of KStars and your particular changes to make it as if you changed the latest KStars version,
218e.g. reflect changes to the codebase made after you cloned or updated your own KStars copy. This is a significant topic
219you can Google, but the following instructions work most of the time.
220
221Note that this is done before you create your merge request, when you are the only one seeing your code changes.
222Once you have started your merge request, your code is "public" and instead of rebasing, you should follow the merge procedure below.
223
224```
225cd ~/Projects/kstars
226git checkout master
227git pull upstream master # Get the master from the main KStars repo onto your local clone
228git push origin master # Then push your updated local clone into your forked repo
229git checkout YOUR_BRANCH_NAME
230git rebase master
231git push origin YOUR_BRANCH_NAME -f
232```
233
234If there are complications with the rebase, git will make suggestions on how to correct the issues.
235
236**Merging others' changes.** Once you submit a merge request, your code can be seen (and edited) by
237others. At this point, though you still may need to update to the latest KStars version, rebasing destroys
238change information and can overwrite what others are doing. Instead it is best to 'merge' in the current
239version of KStars into your code.
240
241```
242cd ~/Projects/kstars
243git checkout master
244git pull upstream master # Get the master from the main KStars repo onto your local clone
245git push origin master # Then push your updated local clone into your forked repo
246git checkout YOUR_BRANCH_NAME
247git merge master
248git push origin YOUR_BRANCH_NAME
249```
250
251The differences from the rebase section are the last 2 commands: 'git merge master' is used instead of 'git rebase master'.
252Also the 'git push' doesn't use the -f option. The first time you run the 'git push',
253you may be asked by git to add 'set-upstream origin' to the command. In that case, follow those instructions.
254
255If you follow this procedure, you will find a new 'merge commit' added to your branch's git log.
256
257
258**Your next change**. Once your Merge Request is complete (and possibly integrated into KStars), you may wish to move on and develop again.
259The next change will use another (new) feature branch, and the first feature branch could be deleted.
260You may want to run the following regularly to keep your master branch up-to-date with KStars.
261```
262cd ~/Projects/kstars
263git checkout master
264git pull upstream master # Get the master from the main KStars repo onto your local clone
265git push origin master # Then push your updated local clone into your forked repo
266```
267
268## Writing Tests
269Tests are stored in the `Tests` folder and use QTest as support framework:
270* Unitary tests can be found in `auxiliary`, `capture`, `fitsviewer`, etc. They try to verify the behavior
271 of a minimal set of classes, and are support for feature development.
272* UI tests can be found in `kstars_lite_ui` and `kstars_ui`. They execute use cases as the end-user would do from the user
273 interface, and focus on availability of visual feedback and stability of procedures.
274
275### Writing Unitary Tests
2761. Decide where your new unitary test will reside in `Tests`.
277KStars classes should live in a folder matching their origin: for instance, auxiliary class tests live in `auxiliary`.
278Find a suitable place for your test, based on the part of the system that is being tested.
279As an example, a folder named `thatkstarscategory`.
280
2812. Create a new unitary test class, or copy-paste an existing unitary test to a new one.
282Check `Tests/kstars_ui_tests/kstars_ui_tests.h` as an example.
283Name the `.h` and `.cpp` files as "test[lowercase kstars class]" (for instance "testthatkstarsclass"), and update them to match the following:
284```
285/* [Author+Licence header] */
286#ifndef TESTTHATKSTARSCLASS_H
287#define TESTTHATKSTARSCLASS_H
288
289#include <QtTest>
290#include <QObject>
291
292class TestThatKStarsClass: public QObject
293{
294 Q_OBJECT
295public:
296 explicit TestThatKStarsClass(QObject *parent = null);
297
298private slots:
299 void initTestCase(); // Will trigger once at beginning
300 void cleanupTestCase(); // Will trigger once at end
301
302 void init(); // Will trigger before each test
303 void cleanup(); // Will trigger after each test
304
305 void testThisParticularFunction_data(); // Data fixtures for the test function (Qt 5.9+)
306 void testThisParticularFunction(); // Test function
307}
308#endif // TESTTHATKSTARSCLASS_H
309```
310```
311/* [Author+Licence header] */
312#include "testthatkstarsclass.h"
313TestThatKStarsClass::TestThatKStarsClass(QObject* parent): QObject(parent) {}
314TestThatKStarsClass::initTestCase() {}
315TestThatKStarsClass::cleanupTestCase() {}
316TestThatKStarsClass::init() {}
317TestThatKStarsClass::cleanup() {}
318
319TestThatKStarsClass::testThisParticularFunction_data()
320{
321 // If needed, add data fixtures with QTest::AddColumn/QTest::AddRow, each will trigger testThisParticularFunction
322}
323
324TestThatKStarsClass::testThisParticularFunction()
325{
326 // Write your tests here, eventually using QFETCH to retrieve the current data fixture
327}
328
329QTEST_GUILESS_MAIN(TestThatKStarsClass);
330```
331You can use a single file to hold both declaration and definition, but you will need to `#include "testthatkstarsclass.moc"` between the declaration and the definition.
332
3333. Update the CMake configuration to add your test.
334If you created a new folder, create a new `CMakeLists.txt` to add your test:
335```
336ADD_EXECUTABLE( testthatkstarsclass testthatkstarsclass.cpp )
337TARGET_LINK_LIBRARIES( testthatkstarsclass ${TEST_LIBRARIES})
338ADD_TEST( NAME ThatKStarsClassTest COMMAND testthatkstarsclass )
339```
340Have the `CMakeLists.txt` residing one folder higher in the filesystem include that `CMakeLists.txt` by adding:
341```
342include_directories(
343 ...
344 ${kstars_SOURCE_DIR}/kstars/path/to/the/folder/of/the/kstars/class/you/are/testing
345)
346...
347add_subdirectory(thatkstarscategory)
348```
349Make sure you add your `add_subdirectory` in the right dependency group. Ekos tests require `INDI_FOUND` for instance.
350
3514. Write your tests
352Make sure you document behavior with your tests. If you happen to find a bug, don't fix it, mark it with an `QEXPECT_FAIL` macro.
353The test will document the incorrect behavior while the bug is alive, and will fail when the bug is fixed. Then only after that the test may be updated.
354Also pay attention to Qt library version support. For instance, data fixtures require Qt 5.9+.
355
356### Writing User Interface Tests
357
358Follow the same steps as for unitary tests, but locate your test classes in `kstars_ui_tests`.
359
360One important thing about UI tests is that they must all use `QStandardPaths::setTestModeEnabled(true)`, so that they execute with a separate user
361configuration that is initially blank. User interface tests thus require a preliminary setup to function properly, such as using the new configuration
362wizard or setting the geographical location up. For this reason, you need to add the execution of your test in `Tests/kstars_ui_tests/kstars_ui_tests.cpp`,
363in `main()`, **after** the execution of `TestKStarsStartup`.
364
365A second important thing about QTest generally is that test functions have no return code. One therefore needs to write macros to factor duplicated code.
366You will find many existing macros in the header files of `kstars_ui_tests` test classes, to retrieve gadgets, to click buttons or to fill `QComboBox` widgets...
367
368A third important thing about the KStars interface is that it mixes KDE and Qt UI elements. Thus, sometimes tests require verification code to be moved
369to a `QTimer::singleShot` call, and sometimes even clicking on a button has to be made asynchronous for the test to remain in control (modal dialogs).
370Fortunately, these hacks do not alter the execution of the tested code.
371
372When testing, you need to make sure you always use elements that the end-user is able to use. Of course, if a test requires a setup that is not actually part of the
373interesting calls, you may hack a direct call. For instance, some Ekos tests requiring the Telescope Simulator to be pointing at a specific location use
374`QVERIFY(Ekos::Manager::Instance()->mountModule()->sync(ra,dec))`. Remember that sometimes you need to leave time for asynchronous signals to be emitted and caught.
375
376## Credits
377### The KStars Team
378#### Original Author
379Jason Harris <kstars@30doradus.org>
380#### Current Maintainer
381Jasem Mutlaq <mutlaqja@ikarustech.com>
382#### Contributors (Alphabetical)
383* Akarsh Simha <akarsh.simha@kdemail.net>
384* Alexey Khudyakov <alexey.skladnoy@gmail.com>
385* Artem Fedoskin <afedoskin3@gmail.com>
386* Carsten Niehaus <cniehaus@kde.org>
387* Chris Rowland <chris.rowland@cherryfield.me.uk>
388* Csaba Kertesz <csaba.kertesz@gmail.com>
389* Eric Dejouhanet <eric.dejouhanet@gmail.com>
390* Harry de Valence <hdevalence@gmail.com>
391* Heiko Evermann <heiko@evermann.de>
392* Hy Murveit <murveit@gmail.com>
393* James Bowlin <bowlin@mindspring.com>
394* Jérôme Sonrier <jsid@emor3j.fr.eu.org>
395* Mark Hollomon <mhh@mindspring.com>
396* Martin Piskernig <martin.piskernig@stuwo.at>
397* Médéric Boquien <mboquien@free.fr>
398* Pablo de Vicente <pvicentea@wanadoo.es>
399* Prakash Mohan <prakash.mohan@kdemail.net>
400* Rafał Kułaga <rl.kulaga@gmail.com>
401* Rishab Arora <ra.rishab@gmail.com>
402* Robert Lancaster <rlancaste@gmail.com>
403* Samikshan Bairagya <samikshan@gmail.com>
404* Thomas Kabelmann <tk78@gmx.de>
405* Valentin Boettcher <hiro@protagon.space>
406* Victor Cărbune <victor.carbune@kdemail.net>
407* Vincent Jagot <vincent.jagot@free.fr>
408* Wolfgang Reissenberger <sterne-jaeger@t-online.de>
409* Yuri Chornoivan <yurchor@ukr.net>
410
411### Data Sources:
412
413 Most of the catalog data came from the Astronomical Data Center, run by
414 NASA. The website is:
415 http://adc.gsfc.nasa.gov/
416
417 NGC/IC data is compiled by Christian Dersch from OpenNGC database.
418 https://github.com/mattiaverga/OpenNGC (CC-BY-SA-4.0 license)
419
420 Supernovae data is from the Open Supernova Catalog project at https://sne.space
421 Please refer to the published paper here: http://adsabs.harvard.edu/abs/2016arXiv160501054G
422
423 KStars links to the excellent image collections and HTML pages put together
424 by the Students for the Exploration and Development of Space, at:
425 http://www.seds.org
426
427 KStars links to the online Digitized Sky Survey images, which you can
428 query at:
429 http://archive.stsci.edu/cgi-bin/dss_form
430
431 KStars links to images from the HST Heritage project, and from HST
432 press releases:
433 http://heritage.stsci.edu
434 http://oposite.stsci.edu/pubinfo/pr.html
435
436 KStars links to images from the Advanced Observer Program at
437 Kitt Peak National Observatory. If you are interested in astrophotography,
438 you might consider checking out their program:
439 http://www.noao.edu/outreach/aop/
440
441 Credits for each image used in the program are listed in README.images
442
443
444# Original Acknowledgement from the Project Founder
445
446 KStars is a labor of love. It started as a personal hobby of mine, but
447 very soon after I first posted the code on Sourceforge, it started to
448 attract other developers. I am just completely impressed and gratified
449 by my co-developers. I couldn't ask for a more talented, friendly crew.
450 It goes without saying that KStars would be nowhere near what it is today
451 without their efforts. Together, we've made something we can all be
452 proud of.
453
454 We used (primarily) two books as a guide in writing the algorithms used
455 in KStars:
456 + "Practical Astronomy With Your Calculator" by Peter Duffett-Smith
457 + "Astronomical Algorithms" by Jean Meeus
458
459 Thanks to the developers of Qt and KDE whose peerless API made KStars
460 possible. Thanks also to the tireless efforts of the KDE translation
461 teams, who bring KStars to a global audience.
462
463 Thanks to everyone at the KDevelop message boards and on irc.kde.org,
464 for answering my frequent questions.
465
466 Thanks also to the many users who have submitted bug reports or other
467 feedback.
468
469
470You're still reading this? :)
471Well, that's about it. I hope you enjoy KStars!
472
473Jason Harris
474kstars@30doradus.org
475
476KStars Development Mailing list
477kstars-devel@kde.org
478
479Send us ideas and feedback!
480
README.planetmath
1README.planetmath: Understanding Planetary Positions in KStars.
2copyright 2002 by Jason Harris and the KStars team.
3This document is licensed under the terms of the GNU Free Documentation License
4-------------------------------------------------------------------------------
5
6
70. Introduction: Why are the calculations so complicated?
8
9We all learned in school that planets orbit the Sun on simple, beautiful
10elliptical orbits. It turns out this is only true to first order. It
11would be precisely true only if there was only one planet in the Solar System,
12and if both the Planet and the Sun were perfect point masses. In reality,
13each planet's orbit is constantly perturbed by the gravity of the other planets
14and moons. Since the distances to these other bodies change in a complex way,
15the orbital perturbations are also complex. In fact, any time you have more
16than two masses interacting through mutual gravitational attraction, it is
17*not possible* to find a general analytic solution to their orbital motion.
18The best you can do is come up with a numerical model that predicts the orbits
19pretty well, but imperfectly.
20
21
221. The Theory, Briefly
23
24We use the VSOP ("Variations Seculaires des Orbites Planetaires") theory of
25planet positions, as outlined in "Astronomical Algorithms", by Jean Meeus.
26The theory is essentially a Fourier-like expansion of the coordinates for
27a planet as a function of time. That is, for each planet, the Ecliptic
28Longitude, Ecliptic Latitude, and Distance can each be approximated as a sum:
29
30 Long/Lat/Dist = s(0) + s(1)*T + s(2)*T^2 + s(3)*T^3 + s(4)*T^4 + s(5)*T^5
31
32where T is the number of Julian Centuries since J2000. The s(N) parameters
33are each themselves a sum:
34
35 s(N) = SUM_i[ A(N)_i * Cos( B(N)_i + C(N)_i*T ) ]
36
37Again, T is the Julian Centuries since J2000. The A(N)_i, B(N)_i and C(N)_i
38values are constants, and are unique for each planet. An s(N) sum can
39have hundreds of terms, but typically, higher N sums have fewer terms.
40The A/B/C values are stored for each planet in the files
41<planetname>.<L/B/R><N>.vsop. For example, the terms for the s(3) sum
42that describes the T^3 term for the Longitude of Mars are stored in
43"mars.L3.vsop".
44
45Pluto is a bit different. In this case, the positional sums describe the
46Cartesian X, Y, Z coordinates of Pluto (where the Sun is at X,Y,Z=0,0,0).
47The structure of the sums is a bit different as well. See KSPluto.cpp
48(or Astronomical Algorithms) for details.
49
50The Moon is also unique, but the general structure, where the coordinates
51are described by a sum of several sinusoidal series expansions, remains
52the same.
53
54
552. The Implementation.
56
57The KSplanet class contains a static OrbitDataManager member. The
58OrbitDataManager provides for loading and storing the A/B/C constants
59for each planet. In KstarsData::slotInitialize(), we simply call
60loadData() for each planet. KSPlanet::loadData() calls
61OrbitDataManager::loadData(QString n), where n is the name of the planet.
62
63The A/B/C constants are stored hierarchically:
64 + The A,B,C values for a single term in an s(N) sum are stored in an
65 OrbitData object.
66 + The list of OrbitData objects that compose a single s(N) sum is
67 stored in a QVector (recall, this can have up to hundreds of elements).
68 + The six s(N) sums (s(0) through s(5)) are collected as an array of
69 these QVectors ( typedef QVector<OrbitData> OBArray[6] ).
70 + The OBArrays for the Longitude, Latitude, and Distance are collected
71 in a class called OrbitDataColl. Thus, OrbitDataColl stores all the
72 numbers needed to describe the position of any planet, given the
73 Julian Day.
74 + The OrbitDataColl objects for each planet are stored in a QDict object
75 called OrbitDataManager. Since OrbitDataManager is static, each planet can
76 access this single storage location for their positional information.
77 (A QDict is basically a QArray indexed by a string instead of an integer.
78 In this case, the OrbitDataColl elements are indexed by the name of the
79 planets.)
80
81Tree view of this hierarchy:
82
83OrbitDataManager[QDict]: Stores 9 OrbitDataColl objects, one per planet.
84|
85+--OrbitDataColl: Contains all three OBArrays (for
86 Longitude/Latitude/Distance) for a single planet.
87 |
88 +--OBArray[array of 6 QVectors]: the collection of s(N) sums for
89 the Latitude, Longitude, or Distance.
90 |
91 +--QVector: Each s(N) sum is a QVector of OrbitData objects
92 |
93 +--OrbitData: a single triplet of the constants A/B/C for
94 one term in an s(N) sum.
95
96To determine the instantaneous position of a planet, the planet calls its
97findPosition() function. This first calls calcEcliptic(double T), which
98does the calculation outlined above: it computes the s(N) sums to determine
99the Heliocentric Ecliptic Longitude, Ecliptic Latitude, and Distance to the
100planet. findPosition() then transforms from heliocentric to geocentric
101coordinates, using a KSPlanet object passed as an argument representing the
102Earth. Then the ecliptic coordinates are transformed to equatorial
103coordinates (RA,Dec). Finally, the coordinates are corrected for the
104effects of nutation, aberration, and figure-of-the-Earth. Figure-of-the-Earth
105just means correcting for the fact that the observer is not at the center of
106the Earth, rather they are on some point on the Earth's surface, some 6000 km
107from the center. This results in a small parallactic displacement of the
108planet's coordinates compared to its geocentric position. In most cases,
109the planets are far enough away that this correction is negligible; however,
110it is particularly important for the Moon, which is only 385 Mm (i.e.,
111385,000 km) away.
112
113
README.timekeeping
1README.timekeeping: Keeping time in KStars
2copyright 2002 by Jason Harris and the KStars team.
3This document is licensed under the terms of the GNU Free Documentation License
4-------------------------------------------------------------------------------
5
6
71. The Basics
8
9Timekeeping is handled by the SimClock class. SimClock stores the
10simulation time as the Julian Day, in a long double variable
11("julian"). A long double is required to provide sub-second resolution
12in the Julian Day value. The date can be converted to a calendar date
13(QDateTime object) with the UTC() function. julian is updated every
140.1 sec by an internal QTimer, using the SimClock::tick() SLOT,
15connected to the internal QTimer's timeout() SIGNAL.
16
17We make a distinction between "system time" and "simulation time".
18System time is real time, according to the computer's CPU clock.
19Simulation time is the time according to KStars; since the time and
20date are adjustable, system time and simulation time can have an
21arbitrary offset. Furthermore, SimClock has an adjustable Scale
22parameter that determines how many seconds of simulation time pass for
23each second of system time. Scale can even be negative, indicating
24that the simulation clock is running backwards.
25
26The simplest way to advance the simulation time would be to add
27(0.1*Scale) seconds to julian every time tick() is called. However,
28this is not accurate, because there is always some error associated
29with the time it takes to execute tick(), and these errors would
30accumulate during each cycle. Instead, tick() measures the elapsed
31time since some fixed system-time marker ("sysmark"), and adds
32(elapsed_time*Scale) seconds to "julianmark", a fixed simulation-time
33marker that was the exact simulation time at the moment the system-time
34marker was set. This is much more accurate, because any errors in
35tick() do not accumulate. Any time the clock is started, or its
36scale changed, the sysmark and julianmark markers are reset (they are
37also reset if they have not changed in more than 24 hours of real time).
38
39tick() emits the timeAdvanced() signal, which is connected to
40KStarsData::updateTime(), which takes care of updating object
41coordinates and drawing the skymap (see below for details).
42
43Note also that the SimClock class only handles the Julian Day and the
44Universal Time, not the local time. Time zone corrections and daylight
45savings time are handled by KStarsData::updateTime().
46
47
482. Manual Mode
49
50The above procedure works well, as long as tick() takes less than 0.1 sec,
51on average (including the time taken by KStarsData::updateTime()). In
52practice, large values of Scale cause more calls to updateTime() than the
53CPU is able to handle. This results in some time steps being skipped
54altogether, which makes the simulation seem jerky.
55
56To compensate for this, we implemented a "Manual Mode" for SimClock. In
57Manual mode, the internal QTimer is stopped, so that tick() is not
58triggered every 0.1 seconds. Instead, a similar function (manualTick())
59is called whenever KStarsData::updateTime() has finished. manualTick()
60adds Scale seconds to the simulation time. So, the Scale parameter has
61a slightly different meaning in Manual mode. The simulation time
62no longer runs at strictly Scale seconds per real-time second; rather,
63every update of the simulation occurs exactly Scale simulation-seconds
64after the previous update, no matter how long the update takes.
65
66There are two bool variables in SimClock, ManualMode and ManualActive.
67The first controls whether the clock is using Manual Mode (accessed by
68isManualMode()); the second controls whether the clock is running in
69Manual Mode (recall that the internal timer is halted when in Manual
70Mode). The function isActive() returns whether the clock is running,
71for both the standard mode and Manual Mode.
72
73
743. KStarsData::updateTime()
75
76updateTime() is a SLOT connected to the SimClock's timeAdvanced()
77SIGNAL, which is emitted every tick() or manualTick().
78
79KStarsData keeps its own representation of the universal time as a
80QDateTime object (UTime); the first thing that updateTime() does is to
81reset this with clock->UTC(). It then sets the local time QDateTime
82object (LTime) by adding 3600*geo->TZ() seconds to UTime. It then
83checks if it has reached the next daylight savings time change point,
84and adjusts the Time Zone offset, if necessary.
85
86There is a group of time-dependent numbers such as the obliquity and
87the sun's mean anomaly; these are kept in the KSNumbers class. The next
88thing updateTime() does is create a KSNumbers object appropriate for the
89current julian day value [we may be able to save some time by keeping a
90persistent KSNumbers object, and not updating it on every call to
91updateTime(), as the values stored there don't change very quickly].
92
93There are several things that don't need to be updated on every call to
94updateTime(). To save time, we only update them if a certain amount of
95time has passed since the last update. For example, the LastNumUpdate
96variable stores the julian day of the last time object coordinates were
97updated for precession/nutation/aberration. This needs to happen once
98per simulation day, so whenever (CurrentDate-LastNumUpdate) exceeds 1.0,
99it signals the update (by setting needNewCoords=true) and resets
100LastNumUpdate to CurrentDate. Similarly, we use LastPlanetUpdate to
101update planet coordinates 100 times per day. LastSkyUpdate monitors
102the last time the horizontal coordinates were updated (the update
103interval is dependent on the current zoom setting).
104
105Next, we update the focus position. If no object is being tracked, and
106useAltAz=true, then the focus RA needs to advance at the sidereal rate
107(one second on the sky per sidereal second of time). If the simulation
108is tracking an object, then the focus is set to the object's coordinates.
109(See README.skymap for details on the focus position and animated
110slewing)
111
112Finally, the last thing updateTime() does is to re-draw the sky by calling
113SkyMap::update(); see README.skymap for details.
114