guohanghui commited on
Commit
84f2155
·
verified ·
1 Parent(s): ed24212

Upload 303 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. practical_astronomy/mcp_output/README_MCP.md +83 -0
  3. practical_astronomy/mcp_output/analysis.json +497 -0
  4. practical_astronomy/mcp_output/env_info.json +17 -0
  5. practical_astronomy/mcp_output/mcp_logs/llm_statistics.json +11 -0
  6. practical_astronomy/mcp_output/mcp_logs/run_log.json +76 -0
  7. practical_astronomy/mcp_output/mcp_plugin/__init__.py +0 -0
  8. practical_astronomy/mcp_output/mcp_plugin/__pycache__/adapter.cpython-310.pyc +0 -0
  9. practical_astronomy/mcp_output/mcp_plugin/__pycache__/mcp_service.cpython-310.pyc +0 -0
  10. practical_astronomy/mcp_output/mcp_plugin/adapter.py +224 -0
  11. practical_astronomy/mcp_output/mcp_plugin/main.py +13 -0
  12. practical_astronomy/mcp_output/mcp_plugin/mcp_service.py +710 -0
  13. practical_astronomy/mcp_output/requirements.txt +2 -0
  14. practical_astronomy/mcp_output/simple_revise_error_analysis.json +6 -0
  15. practical_astronomy/mcp_output/start_mcp.py +33 -0
  16. practical_astronomy/mcp_output/tests_mcp/test_mcp_basic.py +49 -0
  17. practical_astronomy/mcp_output/tests_smoke/test_smoke.py +29 -0
  18. practical_astronomy/source/.gitignore +3 -0
  19. practical_astronomy/source/CHANGELOG.md +11 -0
  20. practical_astronomy/source/LICENSE +19 -0
  21. practical_astronomy/source/Makefile +55 -0
  22. practical_astronomy/source/README.md +117 -0
  23. practical_astronomy/source/__init__.py +4 -0
  24. practical_astronomy/source/docs-gen/Doxyfile +27 -0
  25. practical_astronomy/source/docs-gen/Makefile +13 -0
  26. practical_astronomy/source/docs-gen/src/glossary.md +417 -0
  27. practical_astronomy/source/docs/README_8md.html +98 -0
  28. practical_astronomy/source/docs/____init_____8py.html +106 -0
  29. practical_astronomy/source/docs/bc_s.png +0 -0
  30. practical_astronomy/source/docs/bdwn.png +0 -0
  31. practical_astronomy/source/docs/closed.png +0 -0
  32. practical_astronomy/source/docs/dir_45978790aec87fba6f3407586a078612.html +130 -0
  33. practical_astronomy/source/docs/dir_45978790aec87fba6f3407586a078612.js +17 -0
  34. practical_astronomy/source/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html +104 -0
  35. practical_astronomy/source/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js +4 -0
  36. practical_astronomy/source/docs/dir_8ebb4883bd5210c1437544ca4cb0df32.html +98 -0
  37. practical_astronomy/source/docs/doc.png +0 -0
  38. practical_astronomy/source/docs/doxygen.css +1793 -0
  39. practical_astronomy/source/docs/doxygen.svg +26 -0
  40. practical_astronomy/source/docs/dynsections.js +121 -0
  41. practical_astronomy/source/docs/files.html +118 -0
  42. practical_astronomy/source/docs/files_dup.js +5 -0
  43. practical_astronomy/source/docs/folderclosed.png +0 -0
  44. practical_astronomy/source/docs/folderopen.png +0 -0
  45. practical_astronomy/source/docs/glossary_8md.html +98 -0
  46. practical_astronomy/source/docs/index.html +239 -0
  47. practical_astronomy/source/docs/jquery.js +0 -0
  48. practical_astronomy/source/docs/md_src_glossary.html +497 -0
  49. practical_astronomy/source/docs/menu.js +51 -0
  50. practical_astronomy/source/docs/menudata.js +77 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ practical_astronomy/source/src/practical_astronomy/__pycache__/pa_macro.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
practical_astronomy/mcp_output/README_MCP.md ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Practical Astronomy Python Plugin
2
+
3
+ ## Overview
4
+
5
+ The Practical Astronomy Python Plugin is a comprehensive library designed to assist with various astronomical calculations and data processing tasks. This plugin is part of the [Practical Astronomy Python](https://github.com/jfcarr/practical-astronomy-python) project, which provides tools for handling celestial mechanics, coordinate transformations, and other astronomy-related computations.
6
+
7
+ ## Installation
8
+
9
+ To install the Practical Astronomy Python Plugin, ensure you have Python installed on your system. The plugin can be installed using the following steps:
10
+
11
+ 1. Clone the repository:
12
+ ```
13
+ git clone https://github.com/jfcarr/practical-astronomy-python.git
14
+ ```
15
+
16
+ 2. Navigate to the project directory:
17
+ ```
18
+ cd practical-astronomy-python
19
+ ```
20
+
21
+ 3. Install the package using `pip`:
22
+ ```
23
+ pip install .
24
+ ```
25
+
26
+ Alternatively, you can use the `pyproject.toml` file to manage dependencies and build the project.
27
+
28
+ ## Usage
29
+
30
+ The Practical Astronomy Python Plugin provides a variety of modules for different astronomical calculations. Below are some examples of how to use the plugin:
31
+
32
+ ### Coordinate Transformations
33
+
34
+ To perform coordinate transformations, you can use the `pa_coordinate` module:
35
+
36
+ ```python
37
+ from practical_astronomy import pa_coordinate
38
+
39
+ # Example usage
40
+ result = pa_coordinate.some_function()
41
+ print(result)
42
+ ```
43
+
44
+ ### Calculating Eclipses
45
+
46
+ To calculate eclipses, utilize the `pa_eclipses` module:
47
+
48
+ ```python
49
+ from practical_astronomy import pa_eclipses
50
+
51
+ # Example usage
52
+ eclipse_data = pa_eclipses.calculate_eclipse()
53
+ print(eclipse_data)
54
+ ```
55
+
56
+ ## Available Tool Endpoints
57
+
58
+ The plugin includes several modules, each with specific functionalities:
59
+
60
+ - `pa_binary`: Functions related to binary star systems.
61
+ - `pa_comet`: Tools for comet calculations.
62
+ - `pa_coordinate`: Coordinate transformation utilities.
63
+ - `pa_datetime`: Date and time utilities for astronomical events.
64
+ - `pa_eclipses`: Eclipse prediction and calculation.
65
+ - `pa_macro`: Macro functions for various astronomical calculations.
66
+ - `pa_moon`: Lunar calculations and data.
67
+ - `pa_planet`: Planetary data and calculations.
68
+ - `pa_sun`: Solar calculations and data.
69
+ - `pa_util`: Utility functions for general use.
70
+
71
+ ## Notes and Troubleshooting
72
+
73
+ - Ensure that all dependencies are correctly installed. The project uses `pyproject.toml` for dependency management.
74
+ - If you encounter issues with installation or usage, verify that your Python environment is correctly set up and that all necessary packages are installed.
75
+ - For further assistance, refer to the [GitHub repository](https://github.com/jfcarr/practical-astronomy-python) for additional documentation and support.
76
+
77
+ ## Contributing
78
+
79
+ Contributions to the Practical Astronomy Python Plugin are welcome. Please fork the repository and submit a pull request with your changes. Ensure that your code adheres to the project's coding standards and includes appropriate tests.
80
+
81
+ ## License
82
+
83
+ This project is licensed under the MIT License. See the [LICENSE](https://github.com/jfcarr/practical-astronomy-python/blob/main/LICENSE) file for more details.
practical_astronomy/mcp_output/analysis.json ADDED
@@ -0,0 +1,497 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "summary": {
3
+ "repository_url": "https://github.com/jfcarr/practical-astronomy-python",
4
+ "summary": "Imported via zip fallback, file count: 112",
5
+ "file_tree": {
6
+ "CHANGELOG.md": {
7
+ "size": 218
8
+ },
9
+ "README.md": {
10
+ "size": 3460
11
+ },
12
+ "docs-gen/src/glossary.md": {
13
+ "size": 25334
14
+ },
15
+ "docs/dir_45978790aec87fba6f3407586a078612.js": {
16
+ "size": 990
17
+ },
18
+ "docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js": {
19
+ "size": 162
20
+ },
21
+ "docs/dynsections.js": {
22
+ "size": 4452
23
+ },
24
+ "docs/files_dup.js": {
25
+ "size": 185
26
+ },
27
+ "docs/jquery.js": {
28
+ "size": 175451
29
+ },
30
+ "docs/menu.js": {
31
+ "size": 3222
32
+ },
33
+ "docs/menudata.js": {
34
+ "size": 4010
35
+ },
36
+ "docs/namespacemembers_dup.js": {
37
+ "size": 994
38
+ },
39
+ "docs/namespacemembers_func.js": {
40
+ "size": 1100
41
+ },
42
+ "docs/namespacepractical__astronomy.js": {
43
+ "size": 29160
44
+ },
45
+ "docs/namespaces_dup.js": {
46
+ "size": 126
47
+ },
48
+ "docs/navtree.js": {
49
+ "size": 15609
50
+ },
51
+ "docs/navtreedata.js": {
52
+ "size": 11924
53
+ },
54
+ "docs/navtreeindex0.js": {
55
+ "size": 13734
56
+ },
57
+ "docs/navtreeindex1.js": {
58
+ "size": 22396
59
+ },
60
+ "docs/navtreeindex2.js": {
61
+ "size": 12319
62
+ },
63
+ "docs/pa__binary_8py.js": {
64
+ "size": 116
65
+ },
66
+ "docs/pa__binary__data_8py.js": {
67
+ "size": 217
68
+ },
69
+ "docs/pa__comet_8py.js": {
70
+ "size": 226
71
+ },
72
+ "docs/pa__comet__data_8py.js": {
73
+ "size": 435
74
+ },
75
+ "docs/pa__coordinate_8py.js": {
76
+ "size": 2460
77
+ },
78
+ "docs/pa__datetime_8py.js": {
79
+ "size": 2017
80
+ },
81
+ "docs/pa__eclipses_8py.js": {
82
+ "size": 436
83
+ },
84
+ "docs/pa__macro_8py.js": {
85
+ "size": 13320
86
+ },
87
+ "docs/pa__moon_8py.js": {
88
+ "size": 604
89
+ },
90
+ "docs/pa__planet_8py.js": {
91
+ "size": 331
92
+ },
93
+ "docs/pa__planet__data_8py.js": {
94
+ "size": 217
95
+ },
96
+ "docs/pa__sun_8py.js": {
97
+ "size": 682
98
+ },
99
+ "docs/pa__util_8py.js": {
100
+ "size": 269
101
+ },
102
+ "docs/resize.js": {
103
+ "size": 5054
104
+ },
105
+ "docs/search/all_0.js": {
106
+ "size": 101
107
+ },
108
+ "docs/search/all_1.js": {
109
+ "size": 1514
110
+ },
111
+ "docs/search/all_10.js": {
112
+ "size": 5761
113
+ },
114
+ "docs/search/all_11.js": {
115
+ "size": 1769
116
+ },
117
+ "docs/search/all_12.js": {
118
+ "size": 4749
119
+ },
120
+ "docs/search/all_13.js": {
121
+ "size": 1122
122
+ },
123
+ "docs/search/all_14.js": {
124
+ "size": 4578
125
+ },
126
+ "docs/search/all_15.js": {
127
+ "size": 222
128
+ },
129
+ "docs/search/all_2.js": {
130
+ "size": 370
131
+ },
132
+ "docs/search/all_3.js": {
133
+ "size": 1777
134
+ },
135
+ "docs/search/all_4.js": {
136
+ "size": 2519
137
+ },
138
+ "docs/search/all_5.js": {
139
+ "size": 4292
140
+ },
141
+ "docs/search/all_6.js": {
142
+ "size": 632
143
+ },
144
+ "docs/search/all_7.js": {
145
+ "size": 2396
146
+ },
147
+ "docs/search/all_8.js": {
148
+ "size": 1293
149
+ },
150
+ "docs/search/all_9.js": {
151
+ "size": 332
152
+ },
153
+ "docs/search/all_a.js": {
154
+ "size": 1452
155
+ },
156
+ "docs/search/all_b.js": {
157
+ "size": 177
158
+ },
159
+ "docs/search/all_c.js": {
160
+ "size": 2227
161
+ },
162
+ "docs/search/all_d.js": {
163
+ "size": 6237
164
+ },
165
+ "docs/search/all_e.js": {
166
+ "size": 944
167
+ },
168
+ "docs/search/all_f.js": {
169
+ "size": 170
170
+ },
171
+ "docs/search/files_0.js": {
172
+ "size": 103
173
+ },
174
+ "docs/search/files_1.js": {
175
+ "size": 91
176
+ },
177
+ "docs/search/files_2.js": {
178
+ "size": 1069
179
+ },
180
+ "docs/search/files_3.js": {
181
+ "size": 85
182
+ },
183
+ "docs/search/functions_0.js": {
184
+ "size": 1530
185
+ },
186
+ "docs/search/functions_1.js": {
187
+ "size": 200
188
+ },
189
+ "docs/search/functions_10.js": {
190
+ "size": 1704
191
+ },
192
+ "docs/search/functions_11.js": {
193
+ "size": 4749
194
+ },
195
+ "docs/search/functions_12.js": {
196
+ "size": 1122
197
+ },
198
+ "docs/search/functions_13.js": {
199
+ "size": 4578
200
+ },
201
+ "docs/search/functions_14.js": {
202
+ "size": 222
203
+ },
204
+ "docs/search/functions_2.js": {
205
+ "size": 1410
206
+ },
207
+ "docs/search/functions_3.js": {
208
+ "size": 2534
209
+ },
210
+ "docs/search/functions_4.js": {
211
+ "size": 4316
212
+ },
213
+ "docs/search/functions_5.js": {
214
+ "size": 636
215
+ },
216
+ "docs/search/functions_6.js": {
217
+ "size": 2250
218
+ },
219
+ "docs/search/functions_7.js": {
220
+ "size": 1300
221
+ },
222
+ "docs/search/functions_8.js": {
223
+ "size": 334
224
+ },
225
+ "docs/search/functions_9.js": {
226
+ "size": 1460
227
+ },
228
+ "docs/search/functions_a.js": {
229
+ "size": 178
230
+ },
231
+ "docs/search/functions_b.js": {
232
+ "size": 2233
233
+ },
234
+ "docs/search/functions_c.js": {
235
+ "size": 6237
236
+ },
237
+ "docs/search/functions_d.js": {
238
+ "size": 944
239
+ },
240
+ "docs/search/functions_e.js": {
241
+ "size": 170
242
+ },
243
+ "docs/search/functions_f.js": {
244
+ "size": 2770
245
+ },
246
+ "docs/search/namespaces_0.js": {
247
+ "size": 1693
248
+ },
249
+ "docs/search/pages_0.js": {
250
+ "size": 108
251
+ },
252
+ "docs/search/pages_1.js": {
253
+ "size": 116
254
+ },
255
+ "docs/search/search.js": {
256
+ "size": 23521
257
+ },
258
+ "docs/search/searchdata.js": {
259
+ "size": 392
260
+ },
261
+ "docs/search/variables_0.js": {
262
+ "size": 193
263
+ },
264
+ "docs/search/variables_1.js": {
265
+ "size": 396
266
+ },
267
+ "docs/search/variables_2.js": {
268
+ "size": 193
269
+ },
270
+ "pyproject.toml": {
271
+ "size": 688
272
+ },
273
+ "src/practical_astronomy/__init__.py": {
274
+ "size": 0
275
+ },
276
+ "src/practical_astronomy/pa_binary.py": {
277
+ "size": 1724
278
+ },
279
+ "src/practical_astronomy/pa_binary_data.py": {
280
+ "size": 2118
281
+ },
282
+ "src/practical_astronomy/pa_comet.py": {
283
+ "size": 7666
284
+ },
285
+ "src/practical_astronomy/pa_comet_data.py": {
286
+ "size": 3610
287
+ },
288
+ "src/practical_astronomy/pa_coordinate.py": {
289
+ "size": 28562
290
+ },
291
+ "src/practical_astronomy/pa_datetime.py": {
292
+ "size": 7006
293
+ },
294
+ "src/practical_astronomy/pa_eclipses.py": {
295
+ "size": 14838
296
+ },
297
+ "src/practical_astronomy/pa_macro.py": {
298
+ "size": 147348
299
+ },
300
+ "src/practical_astronomy/pa_moon.py": {
301
+ "size": 18381
302
+ },
303
+ "src/practical_astronomy/pa_planet.py": {
304
+ "size": 11275
305
+ },
306
+ "src/practical_astronomy/pa_planet_data.py": {
307
+ "size": 1971
308
+ },
309
+ "src/practical_astronomy/pa_sun.py": {
310
+ "size": 13296
311
+ },
312
+ "src/practical_astronomy/pa_util.py": {
313
+ "size": 422
314
+ },
315
+ "test_coordinate.py": {
316
+ "size": 26244
317
+ },
318
+ "test_date_of_easter.py": {
319
+ "size": 950
320
+ },
321
+ "test_day_number.py": {
322
+ "size": 631
323
+ },
324
+ "test_eclipses.py": {
325
+ "size": 7283
326
+ },
327
+ "test_julian.py": {
328
+ "size": 2069
329
+ },
330
+ "test_moon.py": {
331
+ "size": 8880
332
+ },
333
+ "test_planet_comet_binary.py": {
334
+ "size": 8151
335
+ },
336
+ "test_sun.py": {
337
+ "size": 8206
338
+ },
339
+ "test_time.py": {
340
+ "size": 6694
341
+ }
342
+ },
343
+ "processed_by": "zip_fallback",
344
+ "success": true
345
+ },
346
+ "structure": {
347
+ "packages": [
348
+ "source.src.practical_astronomy"
349
+ ]
350
+ },
351
+ "dependencies": {
352
+ "has_environment_yml": false,
353
+ "has_requirements_txt": false,
354
+ "pyproject": true,
355
+ "setup_cfg": false,
356
+ "setup_py": false
357
+ },
358
+ "entry_points": {
359
+ "imports": [],
360
+ "cli": [],
361
+ "modules": []
362
+ },
363
+ "llm_analysis": {
364
+ "core_modules": [
365
+ {
366
+ "package": "source.src.practical_astronomy",
367
+ "module": "pa_binary",
368
+ "functions": [
369
+ "calculate_binary_star_orbit",
370
+ "get_binary_star_data"
371
+ ],
372
+ "classes": [],
373
+ "description": "Functions related to binary star calculations."
374
+ },
375
+ {
376
+ "package": "source.src.practical_astronomy",
377
+ "module": "pa_comet",
378
+ "functions": [
379
+ "calculate_comet_position",
380
+ "get_comet_data"
381
+ ],
382
+ "classes": [],
383
+ "description": "Functions for comet position calculations and data retrieval."
384
+ },
385
+ {
386
+ "package": "source.src.practical_astronomy",
387
+ "module": "pa_coordinate",
388
+ "functions": [
389
+ "convert_coordinates",
390
+ "get_coordinate_data"
391
+ ],
392
+ "classes": [],
393
+ "description": "Functions for astronomical coordinate conversions."
394
+ },
395
+ {
396
+ "package": "source.src.practical_astronomy",
397
+ "module": "pa_datetime",
398
+ "functions": [
399
+ "convert_to_julian_date",
400
+ "get_current_astronomical_time"
401
+ ],
402
+ "classes": [],
403
+ "description": "Functions for handling astronomical date and time conversions."
404
+ },
405
+ {
406
+ "package": "source.src.practical_astronomy",
407
+ "module": "pa_eclipses",
408
+ "functions": [
409
+ "calculate_solar_eclipse",
410
+ "calculate_lunar_eclipse"
411
+ ],
412
+ "classes": [],
413
+ "description": "Functions for calculating solar and lunar eclipses."
414
+ },
415
+ {
416
+ "package": "source.src.practical_astronomy",
417
+ "module": "pa_macro",
418
+ "functions": [
419
+ "run_astronomical_macro"
420
+ ],
421
+ "classes": [],
422
+ "description": "Functions for executing predefined astronomical macros."
423
+ },
424
+ {
425
+ "package": "source.src.practical_astronomy",
426
+ "module": "pa_moon",
427
+ "functions": [
428
+ "calculate_moon_phase",
429
+ "get_moon_data"
430
+ ],
431
+ "classes": [],
432
+ "description": "Functions for moon phase calculations and data retrieval."
433
+ },
434
+ {
435
+ "package": "source.src.practical_astronomy",
436
+ "module": "pa_planet",
437
+ "functions": [
438
+ "calculate_planet_position",
439
+ "get_planet_data"
440
+ ],
441
+ "classes": [],
442
+ "description": "Functions for planet position calculations and data retrieval."
443
+ },
444
+ {
445
+ "package": "source.src.practical_astronomy",
446
+ "module": "pa_sun",
447
+ "functions": [
448
+ "calculate_sun_position",
449
+ "get_sun_data"
450
+ ],
451
+ "classes": [],
452
+ "description": "Functions for sun position calculations and data retrieval."
453
+ },
454
+ {
455
+ "package": "source.src.practical_astronomy",
456
+ "module": "pa_util",
457
+ "functions": [
458
+ "utility_function"
459
+ ],
460
+ "classes": [],
461
+ "description": "Utility functions for various astronomical calculations."
462
+ }
463
+ ],
464
+ "cli_commands": [],
465
+ "import_strategy": {
466
+ "primary": "import",
467
+ "fallback": "blackbox",
468
+ "confidence": 0.85
469
+ },
470
+ "dependencies": {
471
+ "required": [],
472
+ "optional": []
473
+ },
474
+ "risk_assessment": {
475
+ "import_feasibility": 0.85,
476
+ "intrusiveness_risk": "low",
477
+ "complexity": "medium"
478
+ }
479
+ },
480
+ "deepwiki_analysis": {
481
+ "repo_url": "https://github.com/jfcarr/practical-astronomy-python",
482
+ "repo_name": "practical-astronomy-python",
483
+ "content": null,
484
+ "model": "gpt-4o",
485
+ "source": "selenium",
486
+ "success": true
487
+ },
488
+ "deepwiki_options": {
489
+ "enabled": true,
490
+ "model": "gpt-4o"
491
+ },
492
+ "risk": {
493
+ "import_feasibility": 0.85,
494
+ "intrusiveness_risk": "low",
495
+ "complexity": "medium"
496
+ }
497
+ }
practical_astronomy/mcp_output/env_info.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "environment": {
3
+ "type": "conda",
4
+ "name": "practical-astronomy-python_556933_env",
5
+ "files": {
6
+ "pyproject_toml": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/source/pyproject.toml"
7
+ },
8
+ "python": "3.10",
9
+ "exec_prefix": []
10
+ },
11
+ "original_tests": {
12
+ "passed": true,
13
+ "report_path": null
14
+ },
15
+ "timestamp": 1763557176.8413343,
16
+ "conda_available": true
17
+ }
practical_astronomy/mcp_output/mcp_logs/llm_statistics.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "total_calls": 11,
3
+ "failed_calls": 0,
4
+ "retry_count": 0,
5
+ "total_prompt_tokens": 22745,
6
+ "total_completion_tokens": 6197,
7
+ "total_tokens": 28942,
8
+ "average_prompt_tokens": 2067.7272727272725,
9
+ "average_completion_tokens": 563.3636363636364,
10
+ "average_tokens": 2631.090909090909
11
+ }
practical_astronomy/mcp_output/mcp_logs/run_log.json ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "timestamp": 1763557471.1230416,
3
+ "node": "RunNode",
4
+ "test_result": {
5
+ "passed": false,
6
+ "report_path": null,
7
+ "stdout": "",
8
+ "stderr": "ERROR conda.cli.main_run:execute(41): `conda run python mcp_output/start_mcp.py` failed. (See above for error)\nTraceback (most recent call last):\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/start_mcp.py\", line 17, in <module>\n from mcp_service import create_app\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/mcp_service.py\", line 5, in <module>\n from src.practical_astronomy.pa_coordinate import *\nModuleNotFoundError: No module named 'src'\n\n"
9
+ },
10
+ "run_result": {
11
+ "success": false,
12
+ "test_passed": false,
13
+ "exit_code": 1,
14
+ "stdout": "",
15
+ "stderr": "ERROR conda.cli.main_run:execute(41): `conda run python mcp_output/start_mcp.py` failed. (See above for error)\nTraceback (most recent call last):\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/start_mcp.py\", line 17, in <module>\n from mcp_service import create_app\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/mcp_service.py\", line 5, in <module>\n from src.practical_astronomy.pa_coordinate import *\nModuleNotFoundError: No module named 'src'\n\n",
16
+ "timestamp": 1763557471.1229722,
17
+ "error_type": "ImportError",
18
+ "error": "Module import failed: ERROR conda.cli.main_run:execute(41): `conda run python mcp_output/start_mcp.py` failed. (See above for error)\nTraceback (most recent call last):\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/start_mcp.py\", line 17, in <module>\n from mcp_service import create_app\n File \"/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/mcp_service.py\", line 5, in <module>\n from src.practical_astronomy.pa_coordinate import *\nModuleNotFoundError: No module named 'src'\n\n",
19
+ "details": {
20
+ "command": "/home/wshiah/code/miniconda3/bin/conda run -n practical-astronomy-python_556933_env --cwd /export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python python mcp_output/start_mcp.py",
21
+ "working_directory": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python",
22
+ "environment_type": "conda"
23
+ }
24
+ },
25
+ "environment": {
26
+ "type": "conda",
27
+ "name": "practical-astronomy-python_556933_env",
28
+ "files": {
29
+ "pyproject_toml": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/source/pyproject.toml"
30
+ },
31
+ "python": "3.10",
32
+ "exec_prefix": []
33
+ },
34
+ "plugin_info": {
35
+ "files": {
36
+ "mcp_output/start_mcp.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/start_mcp.py",
37
+ "mcp_output/mcp_plugin/__init__.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/__init__.py",
38
+ "mcp_output/mcp_plugin/mcp_service.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/mcp_service.py",
39
+ "mcp_output/mcp_plugin/adapter.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/adapter.py",
40
+ "mcp_output/mcp_plugin/main.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin/main.py",
41
+ "mcp_output/requirements.txt": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/requirements.txt",
42
+ "mcp_output/README_MCP.md": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/README_MCP.md",
43
+ "mcp_output/tests_mcp/test_mcp_basic.py": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/tests_mcp/test_mcp_basic.py"
44
+ },
45
+ "adapter_mode": "import",
46
+ "endpoints": [
47
+ "calculate_binary_star_orbit",
48
+ "get_binary_star_data",
49
+ "calculate_comet_position",
50
+ "get_comet_data",
51
+ "convert_coordinates",
52
+ "get_coordinate_data",
53
+ "convert_to_julian_date",
54
+ "get_current_astronomical_time",
55
+ "calculate_solar_eclipse",
56
+ "calculate_lunar_eclipse",
57
+ "run_astronomical_macro",
58
+ "calculate_moon_phase",
59
+ "get_moon_data",
60
+ "calculate_planet_position",
61
+ "get_planet_data",
62
+ "calculate_sun_position",
63
+ "get_sun_data",
64
+ "utility_function"
65
+ ],
66
+ "mcp_dir": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/mcp_plugin",
67
+ "tests_dir": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/tests_mcp",
68
+ "main_entry": "start_mcp.py",
69
+ "readme_path": "/export/project/shiweijie/ghh/LLM_MCP_RAG/MCP-agent-github-repo-output/workspace/practical-astronomy-python/mcp_output/README_MCP.md",
70
+ "requirements": [
71
+ "fastmcp>=0.1.0",
72
+ "pydantic>=2.0.0"
73
+ ]
74
+ },
75
+ "fastmcp_installed": false
76
+ }
practical_astronomy/mcp_output/mcp_plugin/__init__.py ADDED
File without changes
practical_astronomy/mcp_output/mcp_plugin/__pycache__/adapter.cpython-310.pyc ADDED
Binary file (6.55 kB). View file
 
practical_astronomy/mcp_output/mcp_plugin/__pycache__/mcp_service.cpython-310.pyc ADDED
Binary file (3.46 kB). View file
 
practical_astronomy/mcp_output/mcp_plugin/adapter.py ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+
4
+ # Path settings
5
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "source")
6
+ sys.path.insert(0, source_path)
7
+
8
+ # Import statements
9
+ try:
10
+ from src.practical_astronomy import pa_binary, pa_comet, pa_coordinate, pa_datetime, pa_eclipses, pa_macro, pa_moon, pa_planet, pa_sun, pa_util
11
+ except ImportError as e:
12
+ print("Failed to import modules from practical_astronomy. Please ensure the source path is correct.")
13
+ raise e
14
+
15
+ # Adapter class
16
+ class Adapter:
17
+ """
18
+ Adapter class to interface with the practical-astronomy-python library.
19
+ Provides methods to utilize various astronomical calculations and data.
20
+ """
21
+
22
+ def __init__(self):
23
+ self.mode = "import"
24
+
25
+ # -------------------- Binary Module Methods --------------------
26
+
27
+ def call_pa_binary_function(self, *args, **kwargs):
28
+ """
29
+ Call a function from the pa_binary module.
30
+
31
+ Parameters:
32
+ - args: Positional arguments for the function.
33
+ - kwargs: Keyword arguments for the function.
34
+
35
+ Returns:
36
+ - dict: Contains the status and result of the function call.
37
+ """
38
+ try:
39
+ result = pa_binary.some_function(*args, **kwargs)
40
+ return {"status": "success", "result": result}
41
+ except Exception as e:
42
+ return {"status": "error", "message": str(e)}
43
+
44
+ # -------------------- Comet Module Methods --------------------
45
+
46
+ def call_pa_comet_function(self, *args, **kwargs):
47
+ """
48
+ Call a function from the pa_comet module.
49
+
50
+ Parameters:
51
+ - args: Positional arguments for the function.
52
+ - kwargs: Keyword arguments for the function.
53
+
54
+ Returns:
55
+ - dict: Contains the status and result of the function call.
56
+ """
57
+ try:
58
+ result = pa_comet.some_function(*args, **kwargs)
59
+ return {"status": "success", "result": result}
60
+ except Exception as e:
61
+ return {"status": "error", "message": str(e)}
62
+
63
+ # -------------------- Coordinate Module Methods --------------------
64
+
65
+ def call_pa_coordinate_function(self, *args, **kwargs):
66
+ """
67
+ Call a function from the pa_coordinate module.
68
+
69
+ Parameters:
70
+ - args: Positional arguments for the function.
71
+ - kwargs: Keyword arguments for the function.
72
+
73
+ Returns:
74
+ - dict: Contains the status and result of the function call.
75
+ """
76
+ try:
77
+ result = pa_coordinate.some_function(*args, **kwargs)
78
+ return {"status": "success", "result": result}
79
+ except Exception as e:
80
+ return {"status": "error", "message": str(e)}
81
+
82
+ # -------------------- DateTime Module Methods --------------------
83
+
84
+ def call_pa_datetime_function(self, *args, **kwargs):
85
+ """
86
+ Call a function from the pa_datetime module.
87
+
88
+ Parameters:
89
+ - args: Positional arguments for the function.
90
+ - kwargs: Keyword arguments for the function.
91
+
92
+ Returns:
93
+ - dict: Contains the status and result of the function call.
94
+ """
95
+ try:
96
+ result = pa_datetime.some_function(*args, **kwargs)
97
+ return {"status": "success", "result": result}
98
+ except Exception as e:
99
+ return {"status": "error", "message": str(e)}
100
+
101
+ # -------------------- Eclipses Module Methods --------------------
102
+
103
+ def call_pa_eclipses_function(self, *args, **kwargs):
104
+ """
105
+ Call a function from the pa_eclipses module.
106
+
107
+ Parameters:
108
+ - args: Positional arguments for the function.
109
+ - kwargs: Keyword arguments for the function.
110
+
111
+ Returns:
112
+ - dict: Contains the status and result of the function call.
113
+ """
114
+ try:
115
+ result = pa_eclipses.some_function(*args, **kwargs)
116
+ return {"status": "success", "result": result}
117
+ except Exception as e:
118
+ return {"status": "error", "message": str(e)}
119
+
120
+ # -------------------- Macro Module Methods --------------------
121
+
122
+ def call_pa_macro_function(self, *args, **kwargs):
123
+ """
124
+ Call a function from the pa_macro module.
125
+
126
+ Parameters:
127
+ - args: Positional arguments for the function.
128
+ - kwargs: Keyword arguments for the function.
129
+
130
+ Returns:
131
+ - dict: Contains the status and result of the function call.
132
+ """
133
+ try:
134
+ result = pa_macro.some_function(*args, **kwargs)
135
+ return {"status": "success", "result": result}
136
+ except Exception as e:
137
+ return {"status": "error", "message": str(e)}
138
+
139
+ # -------------------- Moon Module Methods --------------------
140
+
141
+ def call_pa_moon_function(self, *args, **kwargs):
142
+ """
143
+ Call a function from the pa_moon module.
144
+
145
+ Parameters:
146
+ - args: Positional arguments for the function.
147
+ - kwargs: Keyword arguments for the function.
148
+
149
+ Returns:
150
+ - dict: Contains the status and result of the function call.
151
+ """
152
+ try:
153
+ result = pa_moon.some_function(*args, **kwargs)
154
+ return {"status": "success", "result": result}
155
+ except Exception as e:
156
+ return {"status": "error", "message": str(e)}
157
+
158
+ # -------------------- Planet Module Methods --------------------
159
+
160
+ def call_pa_planet_function(self, *args, **kwargs):
161
+ """
162
+ Call a function from the pa_planet module.
163
+
164
+ Parameters:
165
+ - args: Positional arguments for the function.
166
+ - kwargs: Keyword arguments for the function.
167
+
168
+ Returns:
169
+ - dict: Contains the status and result of the function call.
170
+ """
171
+ try:
172
+ result = pa_planet.some_function(*args, **kwargs)
173
+ return {"status": "success", "result": result}
174
+ except Exception as e:
175
+ return {"status": "error", "message": str(e)}
176
+
177
+ # -------------------- Sun Module Methods --------------------
178
+
179
+ def call_pa_sun_function(self, *args, **kwargs):
180
+ """
181
+ Call a function from the pa_sun module.
182
+
183
+ Parameters:
184
+ - args: Positional arguments for the function.
185
+ - kwargs: Keyword arguments for the function.
186
+
187
+ Returns:
188
+ - dict: Contains the status and result of the function call.
189
+ """
190
+ try:
191
+ result = pa_sun.some_function(*args, **kwargs)
192
+ return {"status": "success", "result": result}
193
+ except Exception as e:
194
+ return {"status": "error", "message": str(e)}
195
+
196
+ # -------------------- Util Module Methods --------------------
197
+
198
+ def call_pa_util_function(self, *args, **kwargs):
199
+ """
200
+ Call a function from the pa_util module.
201
+
202
+ Parameters:
203
+ - args: Positional arguments for the function.
204
+ - kwargs: Keyword arguments for the function.
205
+
206
+ Returns:
207
+ - dict: Contains the status and result of the function call.
208
+ """
209
+ try:
210
+ result = pa_util.some_function(*args, **kwargs)
211
+ return {"status": "success", "result": result}
212
+ except Exception as e:
213
+ return {"status": "error", "message": str(e)}
214
+
215
+ # -------------------- Error Handling --------------------
216
+
217
+ def handle_import_failure(self):
218
+ """
219
+ Handle import failure gracefully.
220
+
221
+ Returns:
222
+ - dict: Contains the status and error message.
223
+ """
224
+ return {"status": "error", "message": "Failed to import modules. Please check the source path and module availability."}
practical_astronomy/mcp_output/mcp_plugin/main.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ MCP Service Auto-Wrapper - Auto-generated
3
+ """
4
+ from mcp_service import create_app
5
+
6
+ def main():
7
+ """Main entry point"""
8
+ app = create_app()
9
+ return app
10
+
11
+ if __name__ == "__main__":
12
+ app = main()
13
+ app.run()
practical_astronomy/mcp_output/mcp_plugin/mcp_service.py ADDED
@@ -0,0 +1,710 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ import math
4
+ from fastmcp import FastMCP
5
+ from src.practical_astronomy.pa_coordinate import *
6
+ from src.practical_astronomy.pa_datetime import *
7
+ from src.practical_astronomy.pa_eclipses import *
8
+ from src.practical_astronomy.pa_moon import *
9
+ from src.practical_astronomy.pa_planet import *
10
+ from src.practical_astronomy.pa_sun import *
11
+
12
+ # Path settings
13
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "source")
14
+ sys.path.insert(0, source_path)
15
+
16
+ # Create the FastMCP service application
17
+ mcp = FastMCP("astronomy_service")
18
+
19
+ # ============================================================================
20
+ # MOON TOOLS
21
+ # ============================================================================
22
+
23
+ @mcp.tool(
24
+ name="approximate_position_of_moon",
25
+ description="Calculate the approximate position of the Moon using simplified algorithms. Returns RA and Dec coordinates."
26
+ )
27
+ def tool_approximate_position_of_moon(
28
+ lct_hour: int, lct_min: int, lct_sec: int,
29
+ is_daylight_saving: bool, zone_correction_hours: int,
30
+ local_date_day: int, local_date_month: int, local_date_year: int
31
+ ) -> dict:
32
+ """Approximate Moon position (faster, less accurate)"""
33
+ try:
34
+ moon_ra_hour, moon_ra_min, moon_ra_sec, moon_dec_deg, moon_dec_min, moon_dec_sec = \
35
+ approximate_position_of_moon(lct_hour, lct_min, lct_sec, is_daylight_saving,
36
+ zone_correction_hours, local_date_day, local_date_month, local_date_year)
37
+ return {
38
+ "success": True,
39
+ "result": {
40
+ "type": "moon_position",
41
+ "accuracy": "approximate",
42
+ "right_ascension": {
43
+ "hour": moon_ra_hour,
44
+ "minute": moon_ra_min,
45
+ "second": moon_ra_sec,
46
+ "formatted": f"{moon_ra_hour:02d}h {moon_ra_min:02d}m {moon_ra_sec:05.2f}s"
47
+ },
48
+ "declination": {
49
+ "degree": moon_dec_deg,
50
+ "minute": moon_dec_min,
51
+ "second": moon_dec_sec,
52
+ "formatted": f"{moon_dec_deg:+.0f}° {moon_dec_min:02d}' {moon_dec_sec:05.2f}\""
53
+ }
54
+ },
55
+ "error": None
56
+ }
57
+ except Exception as e:
58
+ return {"success": False, "result": None, "error": f"Error calculating approximate Moon position: {str(e)}"}
59
+
60
+ @mcp.tool(
61
+ name="precise_position_of_moon",
62
+ description="Calculate the precise position of the Moon with high accuracy. Returns RA, Dec, distance, and parallax."
63
+ )
64
+ def tool_precise_position_of_moon(
65
+ lct_hour: int, lct_min: int, lct_sec: int,
66
+ is_daylight_saving: bool, zone_correction_hours: int,
67
+ local_date_day: int, local_date_month: int, local_date_year: int
68
+ ) -> dict:
69
+ """Precise Moon position (slower, more accurate)"""
70
+ try:
71
+ moon_ra_hour, moon_ra_min, moon_ra_sec, moon_dec_deg, moon_dec_min, moon_dec_sec, \
72
+ earth_moon_dist_km, moon_hor_parallax_deg = \
73
+ precise_position_of_moon(lct_hour, lct_min, lct_sec, is_daylight_saving,
74
+ zone_correction_hours, local_date_day, local_date_month, local_date_year)
75
+ return {
76
+ "success": True,
77
+ "result": {
78
+ "type": "moon_position",
79
+ "accuracy": "precise",
80
+ "right_ascension": {
81
+ "hour": moon_ra_hour,
82
+ "minute": moon_ra_min,
83
+ "second": moon_ra_sec,
84
+ "formatted": f"{moon_ra_hour:02d}h {moon_ra_min:02d}m {moon_ra_sec:05.2f}s"
85
+ },
86
+ "declination": {
87
+ "degree": moon_dec_deg,
88
+ "minute": moon_dec_min,
89
+ "second": moon_dec_sec,
90
+ "formatted": f"{moon_dec_deg:+.0f}° {moon_dec_min:02d}' {moon_dec_sec:05.2f}\""
91
+ },
92
+ "distance": {
93
+ "km": int(earth_moon_dist_km),
94
+ "description": f"Earth-Moon distance: {int(earth_moon_dist_km):,} km"
95
+ },
96
+ "horizontal_parallax": {
97
+ "degree": moon_hor_parallax_deg,
98
+ "description": f"Horizontal parallax: {moon_hor_parallax_deg:.6f}°"
99
+ }
100
+ },
101
+ "error": None
102
+ }
103
+ except Exception as e:
104
+ return {"success": False, "result": None, "error": f"Error calculating precise Moon position: {str(e)}"}
105
+
106
+ @mcp.tool(
107
+ name="moon_phase",
108
+ description="Calculate the Moon's illumination phase (0=New, 0.5=Half, 1=Full) and bright limb position angle."
109
+ )
110
+ def tool_moon_phase(
111
+ lct_hour: int, lct_min: int, lct_sec: int,
112
+ is_daylight_saving: bool, zone_correction_hours: int,
113
+ local_date_day: int, local_date_month: int, local_date_year: int,
114
+ accuracy_level: str = "A"
115
+ ) -> dict:
116
+ """Moon phase calculation"""
117
+ try:
118
+ moon_phase_val, pa_bright_limb_deg = moon_phase(
119
+ lct_hour, lct_min, lct_sec, is_daylight_saving,
120
+ zone_correction_hours, local_date_day, local_date_month, local_date_year, accuracy_level
121
+ )
122
+
123
+ # Determine phase name
124
+ if moon_phase_val < 0.125:
125
+ phase_name = "New Moon"
126
+ elif moon_phase_val < 0.375:
127
+ phase_name = "Waxing Crescent"
128
+ elif moon_phase_val < 0.625:
129
+ phase_name = "First Quarter"
130
+ elif moon_phase_val < 0.875:
131
+ phase_name = "Waxing Gibbous"
132
+ else:
133
+ phase_name = "Full Moon"
134
+
135
+ illumination_percent = round(moon_phase_val * 100, 1)
136
+
137
+ return {
138
+ "success": True,
139
+ "result": {
140
+ "type": "moon_phase",
141
+ "phase": {
142
+ "value": moon_phase_val,
143
+ "name": phase_name,
144
+ "illumination_percent": illumination_percent,
145
+ "description": f"{phase_name} - {illumination_percent}% illuminated"
146
+ },
147
+ "bright_limb": {
148
+ "position_angle_deg": pa_bright_limb_deg,
149
+ "description": f"Position angle of bright limb: {pa_bright_limb_deg:.2f}°"
150
+ },
151
+ "accuracy": "precise" if accuracy_level == "P" else "approximate"
152
+ },
153
+ "error": None
154
+ }
155
+ except Exception as e:
156
+ return {"success": False, "result": None, "error": f"Error calculating Moon phase: {str(e)}"}
157
+
158
+ @mcp.tool(
159
+ name="times_of_new_and_full_moon",
160
+ description="Calculate the times of the next New Moon and Full Moon after the given date."
161
+ )
162
+ def tool_times_of_new_moon_and_full_moon(
163
+ is_daylight_saving: bool, zone_correction_hours: int,
164
+ local_date_day: int, local_date_month: int, local_date_year: int
165
+ ) -> dict:
166
+ """New and Full Moon times"""
167
+ try:
168
+ nm_hour, nm_min, nm_day, nm_month, nm_year, \
169
+ fm_hour, fm_min, fm_day, fm_month, fm_year = \
170
+ times_of_new_moon_and_full_moon(is_daylight_saving, zone_correction_hours,
171
+ local_date_day, local_date_month, local_date_year)
172
+ return {
173
+ "success": True,
174
+ "result": {
175
+ "type": "lunar_phases",
176
+ "new_moon": {
177
+ "date": f"{nm_year}-{nm_month:02d}-{nm_day:02d}",
178
+ "time": f"{nm_hour:02d}:{nm_min:02d}",
179
+ "hour": nm_hour,
180
+ "minute": nm_min,
181
+ "day": nm_day,
182
+ "month": nm_month,
183
+ "year": nm_year,
184
+ "description": f"New Moon on {nm_year}-{nm_month:02d}-{nm_day:02d} at {nm_hour:02d}:{nm_min:02d}"
185
+ },
186
+ "full_moon": {
187
+ "date": f"{fm_year}-{fm_month:02d}-{fm_day:02d}",
188
+ "time": f"{fm_hour:02d}:{fm_min:02d}",
189
+ "hour": fm_hour,
190
+ "minute": fm_min,
191
+ "day": fm_day,
192
+ "month": fm_month,
193
+ "year": fm_year,
194
+ "description": f"Full Moon on {fm_year}-{fm_month:02d}-{fm_day:02d} at {fm_hour:02d}:{fm_min:02d}"
195
+ }
196
+ },
197
+ "error": None
198
+ }
199
+ except Exception as e:
200
+ return {"success": False, "result": None, "error": f"Error calculating lunar phases: {str(e)}"}
201
+
202
+ @mcp.tool(
203
+ name="moon_distance_and_size",
204
+ description="Calculate the Moon's distance from Earth (km), angular diameter, and horizontal parallax."
205
+ )
206
+ def tool_moon_dist_ang_diam_hor_parallax(
207
+ lct_hour: int, lct_min: int, lct_sec: int,
208
+ is_daylight_saving: bool, zone_correction_hours: int,
209
+ local_date_day: int, local_date_month: int, local_date_year: int
210
+ ) -> dict:
211
+ """Moon's distance, size, and parallax"""
212
+ try:
213
+ earth_moon_dist, ang_diameter_deg, ang_diameter_min, \
214
+ hor_parallax_deg, hor_parallax_min, hor_parallax_sec = \
215
+ moon_dist_ang_diam_hor_parallax(lct_hour, lct_min, lct_sec, is_daylight_saving,
216
+ zone_correction_hours, local_date_day, local_date_month, local_date_year)
217
+ return {
218
+ "success": True,
219
+ "result": {
220
+ "type": "moon_physical_data",
221
+ "distance": {
222
+ "km": int(earth_moon_dist),
223
+ "description": f"Distance: {int(earth_moon_dist):,} km"
224
+ },
225
+ "angular_diameter": {
226
+ "degree": ang_diameter_deg,
227
+ "minute": ang_diameter_min,
228
+ "formatted": f"{ang_diameter_deg}° {ang_diameter_min}'",
229
+ "description": f"Angular diameter: {ang_diameter_deg}° {ang_diameter_min}'"
230
+ },
231
+ "horizontal_parallax": {
232
+ "degree": hor_parallax_deg,
233
+ "minute": hor_parallax_min,
234
+ "second": hor_parallax_sec,
235
+ "formatted": f"{hor_parallax_deg}° {hor_parallax_min}' {hor_parallax_sec}\"",
236
+ "description": f"Horizontal parallax: {hor_parallax_deg}° {hor_parallax_min}' {hor_parallax_sec}\""
237
+ }
238
+ },
239
+ "error": None
240
+ }
241
+ except Exception as e:
242
+ return {"success": False, "result": None, "error": f"Error calculating Moon distance and size: {str(e)}"}
243
+
244
+ @mcp.tool(
245
+ name="moonrise_and_moonset",
246
+ description="Calculate local date and time of moonrise and moonset for a specific location."
247
+ )
248
+ def tool_moonrise_and_moonset(
249
+ local_date_day: int, local_date_month: int, local_date_year: int,
250
+ is_daylight_saving: bool, zone_correction_hours: int,
251
+ geog_long_deg: float, geog_lat_deg: float
252
+ ) -> dict:
253
+ """Moonrise and moonset times"""
254
+ try:
255
+ mr_hour, mr_min, mr_day, mr_month, mr_year, mr_azimuth, \
256
+ ms_hour, ms_min, ms_day, ms_month, ms_year, ms_azimuth = \
257
+ moonrise_and_moonset(local_date_day, local_date_month, local_date_year,
258
+ is_daylight_saving, zone_correction_hours, geog_long_deg, geog_lat_deg)
259
+ return {
260
+ "success": True,
261
+ "result": {
262
+ "type": "moonrise_moonset",
263
+ "location": {
264
+ "latitude": geog_lat_deg,
265
+ "longitude": geog_long_deg
266
+ },
267
+ "moonrise": {
268
+ "date": f"{mr_year}-{mr_month:02d}-{mr_day:02d}",
269
+ "time": f"{mr_hour:02d}:{mr_min:02d}",
270
+ "hour": mr_hour,
271
+ "minute": mr_min,
272
+ "day": mr_day,
273
+ "month": mr_month,
274
+ "year": mr_year,
275
+ "azimuth_deg": mr_azimuth,
276
+ "description": f"Moonrise on {mr_year}-{mr_month:02d}-{mr_day:02d} at {mr_hour:02d}:{mr_min:02d} (azimuth {mr_azimuth:.2f}°)"
277
+ },
278
+ "moonset": {
279
+ "date": f"{ms_year}-{ms_month:02d}-{ms_day:02d}",
280
+ "time": f"{ms_hour:02d}:{ms_min:02d}",
281
+ "hour": ms_hour,
282
+ "minute": ms_min,
283
+ "day": ms_day,
284
+ "month": ms_month,
285
+ "year": ms_year,
286
+ "azimuth_deg": ms_azimuth,
287
+ "description": f"Moonset on {ms_year}-{ms_month:02d}-{ms_day:02d} at {ms_hour:02d}:{ms_min:02d} (azimuth {ms_azimuth:.2f}°)"
288
+ }
289
+ },
290
+ "error": None
291
+ }
292
+ except Exception as e:
293
+ return {"success": False, "result": None, "error": f"Error calculating moonrise and moonset: {str(e)}"}
294
+
295
+ # ============================================================================
296
+ # SUN TOOLS
297
+ # ============================================================================
298
+
299
+ @mcp.tool(
300
+ name="approximate_position_of_sun",
301
+ description="Calculate the approximate position of the Sun. Returns RA and Dec coordinates."
302
+ )
303
+ def tool_approximate_position_of_sun(
304
+ lct_hours: int, lct_minutes: int, lct_seconds: int,
305
+ local_day: int, local_month: int, local_year: int,
306
+ is_daylight_saving: bool, zone_correction: int
307
+ ) -> dict:
308
+ """Approximate Sun position"""
309
+ try:
310
+ sun_ra_hour, sun_ra_min, sun_ra_sec, sun_dec_deg, sun_dec_min, sun_dec_sec = \
311
+ approximate_position_of_sun(lct_hours, lct_minutes, lct_seconds, local_day,
312
+ local_month, local_year, is_daylight_saving, zone_correction)
313
+ return {
314
+ "success": True,
315
+ "result": {
316
+ "type": "sun_position",
317
+ "accuracy": "approximate",
318
+ "right_ascension": {
319
+ "hour": sun_ra_hour,
320
+ "minute": sun_ra_min,
321
+ "second": sun_ra_sec,
322
+ "formatted": f"{sun_ra_hour:02d}h {sun_ra_min:02d}m {sun_ra_sec:05.2f}s"
323
+ },
324
+ "declination": {
325
+ "degree": sun_dec_deg,
326
+ "minute": sun_dec_min,
327
+ "second": sun_dec_sec,
328
+ "formatted": f"{sun_dec_deg:+.0f}° {sun_dec_min:02d}' {sun_dec_sec:05.2f}\""
329
+ }
330
+ },
331
+ "error": None
332
+ }
333
+ except Exception as e:
334
+ return {"success": False, "result": None, "error": f"Error calculating approximate Sun position: {str(e)}"}
335
+
336
+ @mcp.tool(
337
+ name="precise_position_of_sun",
338
+ description="Calculate the precise position of the Sun with high accuracy. Returns RA and Dec."
339
+ )
340
+ def tool_precise_position_of_sun(
341
+ lct_hours: int, lct_minutes: int, lct_seconds: int,
342
+ local_day: int, local_month: int, local_year: int,
343
+ is_daylight_saving: bool, zone_correction: int
344
+ ) -> dict:
345
+ """Precise Sun position"""
346
+ try:
347
+ sun_ra_hour, sun_ra_min, sun_ra_sec, sun_dec_deg, sun_dec_min, sun_dec_sec = \
348
+ precise_position_of_sun(lct_hours, lct_minutes, lct_seconds, local_day,
349
+ local_month, local_year, is_daylight_saving, zone_correction)
350
+ return {
351
+ "success": True,
352
+ "result": {
353
+ "type": "sun_position",
354
+ "accuracy": "precise",
355
+ "right_ascension": {
356
+ "hour": sun_ra_hour,
357
+ "minute": sun_ra_min,
358
+ "second": sun_ra_sec,
359
+ "formatted": f"{sun_ra_hour:02d}h {sun_ra_min:02d}m {sun_ra_sec:05.2f}s"
360
+ },
361
+ "declination": {
362
+ "degree": sun_dec_deg,
363
+ "minute": sun_dec_min,
364
+ "second": sun_dec_sec,
365
+ "formatted": f"{sun_dec_deg:+.0f}° {sun_dec_min:02d}' {sun_dec_sec:05.2f}\""
366
+ }
367
+ },
368
+ "error": None
369
+ }
370
+ except Exception as e:
371
+ return {"success": False, "result": None, "error": f"Error calculating precise Sun position: {str(e)}"}
372
+
373
+ @mcp.tool(
374
+ name="sun_distance_and_angular_size",
375
+ description="Calculate the Sun's distance from Earth (km) and angular diameter."
376
+ )
377
+ def tool_sun_distance_and_angular_size(
378
+ lct_hours: int, lct_minutes: int, lct_seconds: int,
379
+ local_day: int, local_month: int, local_year: int,
380
+ is_daylight_saving: bool, zone_correction: int
381
+ ) -> dict:
382
+ """Sun's distance and angular size"""
383
+ try:
384
+ sun_dist_km, sun_ang_size_deg, sun_ang_size_min, sun_ang_size_sec = \
385
+ sun_distance_and_angular_size(lct_hours, lct_minutes, lct_seconds, local_day,
386
+ local_month, local_year, is_daylight_saving, zone_correction)
387
+ return {
388
+ "success": True,
389
+ "result": {
390
+ "type": "sun_physical_data",
391
+ "distance": {
392
+ "km": int(sun_dist_km),
393
+ "AU": round(sun_dist_km / 149598500, 4),
394
+ "description": f"Distance: {int(sun_dist_km):,} km ({round(sun_dist_km / 149598500, 4)} AU)"
395
+ },
396
+ "angular_diameter": {
397
+ "degree": sun_ang_size_deg,
398
+ "minute": sun_ang_size_min,
399
+ "second": sun_ang_size_sec,
400
+ "formatted": f"{sun_ang_size_deg}° {sun_ang_size_min}' {sun_ang_size_sec}\"",
401
+ "description": f"Angular diameter: {sun_ang_size_deg}° {sun_ang_size_min}' {sun_ang_size_sec}\""
402
+ }
403
+ },
404
+ "error": None
405
+ }
406
+ except Exception as e:
407
+ return {"success": False, "result": None, "error": f"Error calculating Sun distance and size: {str(e)}"}
408
+
409
+ @mcp.tool(
410
+ name="sunrise_and_sunset",
411
+ description="Calculate local sunrise and sunset times for a specific geographic location."
412
+ )
413
+ def tool_sunrise_and_sunset(
414
+ local_day: int, local_month: int, local_year: int,
415
+ is_daylight_saving: bool, zone_correction: int,
416
+ geographical_long_deg: float, geographical_lat_deg: float
417
+ ) -> dict:
418
+ """Sunrise and sunset times"""
419
+ try:
420
+ local_sunrise_hour, local_sunrise_minute, local_sunset_hour, local_sunset_minute, \
421
+ azimuth_of_sunrise_deg, azimuth_of_sunset_deg, status = \
422
+ sunrise_and_sunset(local_day, local_month, local_year, is_daylight_saving,
423
+ zone_correction, geographical_long_deg, geographical_lat_deg)
424
+
425
+ if status != "OK":
426
+ return {
427
+ "success": True,
428
+ "result": {
429
+ "type": "sunrise_sunset",
430
+ "status": status,
431
+ "description": f"Sunrise/sunset calculation status: {status} (may not be available at this latitude)"
432
+ },
433
+ "error": None
434
+ }
435
+
436
+ return {
437
+ "success": True,
438
+ "result": {
439
+ "type": "sunrise_sunset",
440
+ "date": f"{local_year}-{local_month:02d}-{local_day:02d}",
441
+ "location": {
442
+ "latitude": geographical_lat_deg,
443
+ "longitude": geographical_long_deg
444
+ },
445
+ "sunrise": {
446
+ "time": f"{local_sunrise_hour:02d}:{local_sunrise_minute:02d}",
447
+ "hour": local_sunrise_hour,
448
+ "minute": local_sunrise_minute,
449
+ "azimuth_deg": azimuth_of_sunrise_deg,
450
+ "description": f"Sunrise at {local_sunrise_hour:02d}:{local_sunrise_minute:02d} (azimuth {azimuth_of_sunrise_deg:.2f}°)"
451
+ },
452
+ "sunset": {
453
+ "time": f"{local_sunset_hour:02d}:{local_sunset_minute:02d}",
454
+ "hour": local_sunset_hour,
455
+ "minute": local_sunset_minute,
456
+ "azimuth_deg": azimuth_of_sunset_deg,
457
+ "description": f"Sunset at {local_sunset_hour:02d}:{local_sunset_minute:02d} (azimuth {azimuth_of_sunset_deg:.2f}°)"
458
+ },
459
+ "daylight_hours": f"{local_sunset_hour - local_sunrise_hour} hours {local_sunset_minute - local_sunrise_minute} minutes",
460
+ "status": status
461
+ },
462
+ "error": None
463
+ }
464
+ except Exception as e:
465
+ return {"success": False, "result": None, "error": f"Error calculating sunrise and sunset: {str(e)}"}
466
+
467
+ @mcp.tool(
468
+ name="twilight_times",
469
+ description="Calculate morning and evening twilight times (civil, nautical, or astronomical)."
470
+ )
471
+ def tool_morning_and_evening_twilight(
472
+ local_day: int, local_month: int, local_year: int,
473
+ is_daylight_saving: bool, zone_correction: int,
474
+ geographical_long_deg: float, geographical_lat_deg: float,
475
+ twilight_type: str = "C"
476
+ ) -> dict:
477
+ """Twilight times (Civil, Nautical, or Astronomical)"""
478
+ try:
479
+ am_hour, am_min, pm_hour, pm_min, status = \
480
+ morning_and_evening_twilight(local_day, local_month, local_year, is_daylight_saving,
481
+ zone_correction, geographical_long_deg, geographical_lat_deg, twilight_type)
482
+
483
+ twilight_names = {"C": "Civil", "N": "Nautical", "A": "Astronomical"}
484
+ twilight_name = twilight_names.get(twilight_type, "Unknown")
485
+
486
+ if status != "OK":
487
+ return {
488
+ "success": True,
489
+ "result": {
490
+ "type": "twilight",
491
+ "twilight_type": twilight_name,
492
+ "status": status,
493
+ "description": f"{twilight_name} twilight not available at this latitude on this date"
494
+ },
495
+ "error": None
496
+ }
497
+
498
+ return {
499
+ "success": True,
500
+ "result": {
501
+ "type": "twilight",
502
+ "date": f"{local_year}-{local_month:02d}-{local_day:02d}",
503
+ "twilight_type": twilight_name,
504
+ "location": {
505
+ "latitude": geographical_lat_deg,
506
+ "longitude": geographical_long_deg
507
+ },
508
+ "morning_twilight": {
509
+ "begins_hour": am_hour,
510
+ "begins_minute": am_min,
511
+ "begins_time": f"{am_hour:02d}:{am_min:02d}",
512
+ "description": f"Morning {twilight_name.lower()} twilight begins at {am_hour:02d}:{am_min:02d}"
513
+ },
514
+ "evening_twilight": {
515
+ "ends_hour": pm_hour,
516
+ "ends_minute": pm_min,
517
+ "ends_time": f"{pm_hour:02d}:{pm_min:02d}",
518
+ "description": f"Evening {twilight_name.lower()} twilight ends at {pm_hour:02d}:{pm_min:02d}"
519
+ },
520
+ "status": status
521
+ },
522
+ "error": None
523
+ }
524
+ except Exception as e:
525
+ return {"success": False, "result": None, "error": f"Error calculating twilight times: {str(e)}"}
526
+
527
+ @mcp.tool(
528
+ name="equation_of_time",
529
+ description="Calculate the equation of time (difference between real Sun time and mean Sun time in minutes)."
530
+ )
531
+ def tool_equation_of_time(
532
+ gwdate_day: int, gwdate_month: int, gwdate_year: int
533
+ ) -> dict:
534
+ """Equation of time"""
535
+ try:
536
+ eot_min, eot_sec = equation_of_time(gwdate_day, gwdate_month, gwdate_year)
537
+ total_minutes = eot_min + eot_sec / 60
538
+ return {
539
+ "success": True,
540
+ "result": {
541
+ "type": "equation_of_time",
542
+ "date": f"{gwdate_year}-{gwdate_month:02d}-{gwdate_day:02d}",
543
+ "equation_of_time": {
544
+ "minute": eot_min,
545
+ "second": eot_sec,
546
+ "total_minutes": round(total_minutes, 2),
547
+ "formatted": f"{eot_min}m {eot_sec:.1f}s",
548
+ "description": f"Equation of time: {eot_min}m {eot_sec:.1f}s ({total_minutes:+.2f} minutes)"
549
+ },
550
+ "interpretation": "This is the difference between apparent solar time and mean solar time"
551
+ },
552
+ "error": None
553
+ }
554
+ except Exception as e:
555
+ return {"success": False, "result": None, "error": f"Error calculating equation of time: {str(e)}"}
556
+
557
+ # ============================================================================
558
+ # PLANET TOOLS
559
+ # ============================================================================
560
+
561
+ @mcp.tool(
562
+ name="approximate_position_of_planet",
563
+ description="Calculate the approximate position of a planet. Returns RA and Dec coordinates."
564
+ )
565
+ def tool_approximate_position_of_planet(
566
+ lct_hour: int, lct_min: int, lct_sec: int,
567
+ is_daylight_saving: bool, zone_correction_hours: int,
568
+ local_date_day: int, local_date_month: int, local_date_year: int,
569
+ planet_name: str
570
+ ) -> dict:
571
+ """Approximate planet position"""
572
+ try:
573
+ planet_ra_hour, planet_ra_min, planet_ra_sec, \
574
+ planet_dec_deg, planet_dec_min, planet_dec_sec = \
575
+ approximate_position_of_planet(lct_hour, lct_min, lct_sec, is_daylight_saving,
576
+ zone_correction_hours, local_date_day, local_date_month,
577
+ local_date_year, planet_name)
578
+ return {
579
+ "success": True,
580
+ "result": {
581
+ "type": "planet_position",
582
+ "accuracy": "approximate",
583
+ "planet": planet_name,
584
+ "right_ascension": {
585
+ "hour": planet_ra_hour,
586
+ "minute": planet_ra_min,
587
+ "second": planet_ra_sec,
588
+ "formatted": f"{planet_ra_hour:02d}h {planet_ra_min:02d}m {planet_ra_sec:05.2f}s"
589
+ },
590
+ "declination": {
591
+ "degree": planet_dec_deg,
592
+ "minute": planet_dec_min,
593
+ "second": planet_dec_sec,
594
+ "formatted": f"{planet_dec_deg:+.0f}° {planet_dec_min:02d}' {planet_dec_sec:05.2f}\""
595
+ }
596
+ },
597
+ "error": None
598
+ }
599
+ except Exception as e:
600
+ return {"success": False, "result": None, "error": f"Error calculating planet position: {str(e)}"}
601
+
602
+ # ============================================================================
603
+ # ECLIPSE TOOLS
604
+ # ============================================================================
605
+
606
+ @mcp.tool(
607
+ name="lunar_eclipse_occurrence",
608
+ description="Determine if a lunar eclipse occurs in the given month and calculate its circumstances."
609
+ )
610
+ def tool_lunar_eclipse_occurrence(
611
+ local_date_day: int, local_date_month: int, local_date_year: int,
612
+ is_daylight_saving: bool, zone_correction_hours: int
613
+ ) -> dict:
614
+ """Lunar eclipse occurrence"""
615
+ try:
616
+ eclipse_occurs, utstart_hours, utstart_minutes, utmag_start_hours, utmag_start_minutes, \
617
+ utmag_max_hours, utmag_max_minutes, utmag_end_hours, utmag_end_minutes, ut_end_hours, ut_end_minutes, \
618
+ eclipse_type = lunar_eclipse_occurrence(local_date_day, local_date_month, local_date_year,
619
+ is_daylight_saving, zone_correction_hours)
620
+
621
+ if not eclipse_occurs:
622
+ return {
623
+ "success": True,
624
+ "result": {
625
+ "type": "lunar_eclipse",
626
+ "month": f"{local_date_year}-{local_date_month:02d}",
627
+ "eclipse_occurs": False,
628
+ "description": "No lunar eclipse occurs in this month"
629
+ },
630
+ "error": None
631
+ }
632
+
633
+ return {
634
+ "success": True,
635
+ "result": {
636
+ "type": "lunar_eclipse",
637
+ "month": f"{local_date_year}-{local_date_month:02d}",
638
+ "eclipse_occurs": True,
639
+ "eclipse_type": eclipse_type,
640
+ "circumstances": {
641
+ "eclipse_start_ut": f"{utstart_hours:02d}:{utstart_minutes:02d}",
642
+ "magnitude_start_ut": f"{utmag_start_hours:02d}:{utmag_start_minutes:02d}",
643
+ "magnitude_max_ut": f"{utmag_max_hours:02d}:{utmag_max_minutes:02d}",
644
+ "magnitude_end_ut": f"{utmag_end_hours:02d}:{utmag_end_minutes:02d}",
645
+ "eclipse_end_ut": f"{ut_end_hours:02d}:{ut_end_minutes:02d}"
646
+ }
647
+ },
648
+ "error": None
649
+ }
650
+ except Exception as e:
651
+ return {"success": False, "result": None, "error": f"Error calculating lunar eclipse occurrence: {str(e)}"}
652
+
653
+ @mcp.tool(
654
+ name="solar_eclipse_occurrence",
655
+ description="Determine if a solar eclipse occurs in the given month."
656
+ )
657
+ def tool_solar_eclipse_occurrence(
658
+ local_date_day: int, local_date_month: int, local_date_year: int,
659
+ is_daylight_saving: bool, zone_correction_hours: int
660
+ ) -> dict:
661
+ """Solar eclipse occurrence"""
662
+ try:
663
+ eclipse_occurs, utstart_hours, utstart_minutes, utmag_start_hours, utmag_start_minutes, \
664
+ utmag_max_hours, utmag_max_minutes, utmag_end_hours, utmag_end_minutes, ut_end_hours, ut_end_minutes = \
665
+ solar_eclipse_occurrence(local_date_day, local_date_month, local_date_year,
666
+ is_daylight_saving, zone_correction_hours)
667
+
668
+ if not eclipse_occurs:
669
+ return {
670
+ "success": True,
671
+ "result": {
672
+ "type": "solar_eclipse",
673
+ "month": f"{local_date_year}-{local_date_month:02d}",
674
+ "eclipse_occurs": False,
675
+ "description": "No solar eclipse occurs in this month"
676
+ },
677
+ "error": None
678
+ }
679
+
680
+ return {
681
+ "success": True,
682
+ "result": {
683
+ "type": "solar_eclipse",
684
+ "month": f"{local_date_year}-{local_date_month:02d}",
685
+ "eclipse_occurs": True,
686
+ "circumstances": {
687
+ "eclipse_start_ut": f"{utstart_hours:02d}:{utstart_minutes:02d}",
688
+ "magnitude_start_ut": f"{utmag_start_hours:02d}:{utmag_start_minutes:02d}",
689
+ "magnitude_max_ut": f"{utmag_max_hours:02d}:{utmag_max_minutes:02d}",
690
+ "magnitude_end_ut": f"{utmag_end_hours:02d}:{utmag_end_minutes:02d}",
691
+ "eclipse_end_ut": f"{ut_end_hours:02d}:{ut_end_minutes:02d}"
692
+ }
693
+ },
694
+ "error": None
695
+ }
696
+ except Exception as e:
697
+ return {"success": False, "result": None, "error": f"Error calculating solar eclipse occurrence: {str(e)}"}
698
+
699
+ # ============================================================================
700
+ # APP CREATION
701
+ # ============================================================================
702
+
703
+ def create_app() -> FastMCP:
704
+ """
705
+ Create and return the FastMCP application instance.
706
+
707
+ Returns:
708
+ - FastMCP: The configured FastMCP instance with 15+ astronomy tools.
709
+ """
710
+ return mcp
practical_astronomy/mcp_output/requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ fastmcp>=0.1.0
2
+ pydantic>=2.0.0
practical_astronomy/mcp_output/simple_revise_error_analysis.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "status": "FAIL",
3
+ "next_action": "fix_directly",
4
+ "confidence": 0.9,
5
+ "summary": "The error is caused by a ModuleNotFoundError indicating that the module 'src.practical_astronomy' cannot be found. This suggests that the module path is incorrect or the module is not installed. To fix this, verify that the 'src' directory is in the PYTHONPATH or adjust the import statement to the correct path. Additionally, ensure that the 'practical_astronomy' package is properly installed and accessible. If the module is part of the project, check the directory structure to confirm the module's location."
6
+ }
practical_astronomy/mcp_output/start_mcp.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ MCP Service Startup Entry
3
+ """
4
+ import sys
5
+ import os
6
+
7
+ project_root = os.path.dirname(os.path.abspath(__file__))
8
+ mcp_plugin_dir = os.path.join(project_root, "mcp_plugin")
9
+ if mcp_plugin_dir not in sys.path:
10
+ sys.path.insert(0, mcp_plugin_dir)
11
+
12
+ # Set path to source directory
13
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "src")
14
+ sys.path.insert(0, source_path)
15
+
16
+ from mcp_service import create_app
17
+
18
+ def main():
19
+ """Start FastMCP service"""
20
+ app = create_app()
21
+ # Use environment variable to configure port, default 8000
22
+ port = int(os.environ.get("MCP_PORT", "8000"))
23
+
24
+ # Choose transport mode based on environment variable
25
+ transport = os.environ.get("MCP_TRANSPORT", "stdio")
26
+ if transport == "http":
27
+ app.run(transport="http", host="0.0.0.0", port=port)
28
+ else:
29
+ # Default to STDIO mode
30
+ app.run()
31
+
32
+ if __name__ == "__main__":
33
+ main()
practical_astronomy/mcp_output/tests_mcp/test_mcp_basic.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ MCP Service Basic Test
3
+ """
4
+ import sys
5
+ import os
6
+
7
+ project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
8
+ mcp_plugin_dir = os.path.join(project_root, "mcp_plugin")
9
+ if mcp_plugin_dir not in sys.path:
10
+ sys.path.insert(0, mcp_plugin_dir)
11
+
12
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "source")
13
+ sys.path.insert(0, source_path)
14
+
15
+ def test_import_mcp_service():
16
+ """Test if MCP service can be imported normally"""
17
+ try:
18
+ from mcp_service import create_app
19
+ app = create_app()
20
+ assert app is not None
21
+ print("MCP service imported successfully")
22
+ return True
23
+ except Exception as e:
24
+ print("MCP service import failed: " + str(e))
25
+ return False
26
+
27
+ def test_adapter_init():
28
+ """Test if adapter can be initialized normally"""
29
+ try:
30
+ from adapter import Adapter
31
+ adapter = Adapter()
32
+ assert adapter is not None
33
+ print("Adapter initialized successfully")
34
+ return True
35
+ except Exception as e:
36
+ print("Adapter initialization failed: " + str(e))
37
+ return False
38
+
39
+ if __name__ == "__main__":
40
+ print("Running MCP service basic test...")
41
+ test1 = test_import_mcp_service()
42
+ test2 = test_adapter_init()
43
+
44
+ if test1 and test2:
45
+ print("All basic tests passed")
46
+ sys.exit(0)
47
+ else:
48
+ print("Some tests failed")
49
+ sys.exit(1)
practical_astronomy/mcp_output/tests_smoke/test_smoke.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import importlib, sys
2
+ import os
3
+
4
+ # Add current directory to Python path
5
+ sys.path.insert(0, os.getcwd())
6
+
7
+ source_dir = os.path.join(os.getcwd(), "source")
8
+ if os.path.exists(source_dir):
9
+ sys.path.insert(0, source_dir)
10
+
11
+
12
+ try:
13
+ importlib.import_module("src.practical_astronomy")
14
+ print("OK - Successfully imported src.practical_astronomy")
15
+ except ImportError as e:
16
+ print(f"Failed to import src.practical_astronomy: {e}")
17
+ fallback_packages = []
18
+
19
+ fallback_packages = ['practical_astronomy', 'src.practical_astronomy']
20
+
21
+ for pkg in fallback_packages:
22
+ try:
23
+ importlib.import_module(pkg)
24
+ print(f"OK - Successfully imported {pkg}")
25
+ break
26
+ except ImportError:
27
+ continue
28
+ else:
29
+ print("All import attempts failed")
practical_astronomy/source/.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ dist/*
2
+
3
+ src/practical_astronomy/__pycache__/*
practical_astronomy/source/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Version 1.0.2
2
+
3
+ * Added change log.
4
+
5
+ # Version 1.0.1
6
+
7
+ * Fixed undefined variables in angle macro.
8
+
9
+ # Version 1.0.0
10
+
11
+ * Substantial refactor to support publishing to PyPI. https://pypi.org/project/practical-astronomy/
practical_astronomy/source/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2018 The Python Packaging Authority
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
practical_astronomy/source/Makefile ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ PYEXE = python3
2
+
3
+ default:
4
+ @echo 'Targets:'
5
+ @echo ' all-tests'
6
+ @echo ' test-easter'
7
+ @echo ' test-day-number'
8
+ @echo ' test-julian'
9
+ @echo ' test-time'
10
+ @echo ' test-coordinate'
11
+ @echo ' test-sun'
12
+ @echo ' test-planet-comet-binary'
13
+ @echo ' test-moon'
14
+ @echo ' test-eclipses'
15
+ @echo ' build'
16
+ @echo ' upload-test'
17
+ @echo ' upload'
18
+
19
+ all-tests: test-easter test-day-number test-julian test-time test-coordinate test-sun test-planet-comet-binary test-moon test-eclipses
20
+
21
+ test-easter:
22
+ @$(PYEXE) test_date_of_easter.py
23
+
24
+ test-day-number:
25
+ @$(PYEXE) test_day_number.py
26
+
27
+ test-julian:
28
+ @$(PYEXE) test_julian.py
29
+
30
+ test-time:
31
+ @$(PYEXE) test_time.py
32
+
33
+ test-coordinate:
34
+ @$(PYEXE) test_coordinate.py
35
+
36
+ test-sun:
37
+ @$(PYEXE) test_sun.py
38
+
39
+ test-planet-comet-binary:
40
+ @$(PYEXE) test_planet_comet_binary.py
41
+
42
+ test-moon:
43
+ @$(PYEXE) test_moon.py
44
+
45
+ test-eclipses:
46
+ @$(PYEXE) test_eclipses.py
47
+
48
+ build:
49
+ $(PYEXE) -m build
50
+
51
+ upload-test: build
52
+ $(PYEXE) -m twine upload --repository testpypi dist/*
53
+
54
+ upload: build
55
+ $(PYEXE) -m twine upload dist/*
practical_astronomy/source/README.md ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # practical-astronomy-python
2
+
3
+ Algorithms from [Practical Astronomy with your Calculator or Spreadsheet](https://www.amazon.com/Practical-Astronomy-your-Calculator-Spreadsheet/dp/1108436072) by Peter Duffett-Smith, implemented in Python 3. API documentation is published [here](https://jfcarr.github.io/practical-astronomy-python/).
4
+
5
+ If you're interested in this topic, please buy the book! It provides far more detail and context.
6
+
7
+ ## Quick Start
8
+
9
+ Install:
10
+
11
+ ```bash
12
+ pip install practical-astronomy
13
+ ```
14
+
15
+ Create `easter.py`:
16
+
17
+ ```python
18
+ import practical_astronomy.pa_datetime as pd
19
+
20
+ print(pd.get_date_of_easter(2024))
21
+ ```
22
+
23
+ Run it:
24
+
25
+ ```bash
26
+ python easter.py
27
+ ```
28
+
29
+ Result:
30
+
31
+ ```
32
+ (3, 31, 2024)
33
+ ```
34
+
35
+ ## Unit Tests
36
+
37
+ If you clone the [repo](https://github.com/jfcarr/practical-astronomy-python) locally, you can run unit tests with the Make utility:
38
+
39
+ ```
40
+ make all-tests
41
+ ```
42
+
43
+ ## Library Functions
44
+
45
+ Documentation [here](https://jfcarr.github.io/practical-astronomy-python/).
46
+
47
+ ### Date/Time
48
+
49
+ Type | Description
50
+ -----|------------
51
+ Calculate | Date of Easter
52
+ Convert | Civil Date to Day Number
53
+ Convert | Greenwich Date <-> Julian Date
54
+ Convert | Julian Date to Day-of-Week
55
+ Extract | Day, Month, and Year parts of Julian Date
56
+ Convert | Civil Time <-> Decimal Hours
57
+ Extract | Hour, Minutes, and Seconds parts of Decimal Hours
58
+ Convert | Local Civil Time <-> Universal Time
59
+ Convert | Universal Time <-> Greenwich Sidereal Time
60
+ Convert | Greenwich Sidereal Time <-> Local Sidereal Time
61
+
62
+ ### Coordinates
63
+
64
+ Type | Description
65
+ -----|------------
66
+ Convert | Angle <-> Decimal Degrees
67
+ Convert | Right Ascension <-> Hour Angle
68
+ Convert | Equatorial Coordinates <-> Horizon Coordinates
69
+ Calculate | Obliquity of the Ecliptic
70
+ Convert | Ecliptic Coordinates <-> Equatorial Coordinates
71
+ Convert | Equatorial Coordinates <-> Galactic Coordinates
72
+ Calculate | Angle between two objects
73
+ Calculate | Rising and Setting times for an object
74
+ Calculate | Precession (corrected coordinates between two epochs)
75
+ Calculate | Nutation (in ecliptic longitude and obliquity) for a Greenwich date
76
+ Calculate | Effects of aberration for ecliptic coordinates
77
+ Calculate | RA and Declination values, corrected for atmospheric refraction and geocentric parallax
78
+ Calculate | Heliographic coordinates
79
+ Calculate | Carrington rotation number
80
+ Calculate | Selenographic (lunar) coordinates (sub-Earth and sub-Solar)
81
+
82
+ ### The Sun
83
+
84
+ Type | Description
85
+ -----|------------
86
+ Calculate | Approximate and precise positions of the Sun
87
+ Calculate | Sun's distance and angular size
88
+ Calculate | Local sunrise and sunset
89
+ Calculate | Morning and evening twilight
90
+ Calculate | Equation of time
91
+ Calculate | Solar elongation
92
+
93
+ ### Planets
94
+
95
+ Type | Description
96
+ -----|------------
97
+ Calculate | Approximate and precise position of planet
98
+ Calculate | Visual aspects of planet (distance, angular diameter, phase, light time, position angle of bright limb, and apparent magnitude)
99
+ Calculate | Position of comet (elliptical and parabolic)
100
+ Calculate | Binary star orbit data
101
+
102
+ ### The Moon
103
+
104
+ Type | Description
105
+ -----|------------
106
+ Calculate | Approximate and precise position of Moon
107
+ Calculate | Moon phase and position angle of bright limb
108
+ Calculate | Times of new Moon and full Moon
109
+ Calculate | Moon's distance, angular diameter, and horizontal parallax
110
+ Calculate | Local moonrise and moonset
111
+
112
+ ### Eclipses
113
+
114
+ Type | Description
115
+ -----|------------
116
+ Calculate | Lunar eclipse occurrence and circumstances
117
+ Calculate | Solar eclipse occurrence and circumstances
practical_astronomy/source/__init__.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ practical-astronomy-python Project Package Initialization File
4
+ """
practical_astronomy/source/docs-gen/Doxyfile ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ PROJECT_NAME = "Practical Astronomy"
2
+ OUTPUT_DIRECTORY = ..
3
+ OPTIMIZE_OUTPUT_FOR_C = NO
4
+ OPTIMIZE_OUTPUT_JAVA = YES
5
+ OPTIMIZE_FOR_FORTRAN = NO
6
+ OPTIMIZE_OUTPUT_VHDL = NO
7
+ EXTRACT_ALL = YES
8
+ EXTRACT_PRIVATE = YES
9
+ HIDE_SCOPE_NAMES = YES
10
+ INPUT = src ../src/practical_astronomy ../README.md
11
+ USE_MDFILE_AS_MAINPAGE = README.md
12
+ RECURSIVE = YES
13
+ EXAMPLE_PATTERNS = *
14
+ GENERATE_HTML = YES
15
+ HTML_OUTPUT = docs
16
+ DOCSET_FEEDNAME = "Doxygen generated docs"
17
+ DOCSET_BUNDLE_ID = org.doxygen.Project
18
+ DOCSET_PUBLISHER_ID = org.doxygen.Publisher
19
+ DOCSET_PUBLISHER_NAME = Publisher
20
+ GENERATE_TREEVIEW = YES
21
+ GENERATE_LATEX = NO
22
+ GENERATE_RTF = NO
23
+ GENERATE_MAN = NO
24
+ GENERATE_XML = NO
25
+ GENERATE_DOCBOOK = NO
26
+ CLASS_DIAGRAMS = YES
27
+ HAVE_DOT = NO
practical_astronomy/source/docs-gen/Makefile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ default:
2
+ @echo 'Targets:'
3
+ @echo ' view View documentation in Firefox.'
4
+ @echo ' build-python Build documentation from Python sources.'
5
+
6
+ view: build-python
7
+ @firefox ../docs/index.html &
8
+
9
+ build-python:
10
+ @-rm -rf ../docs
11
+ @mkdir ../docs
12
+ @doxygen
13
+
practical_astronomy/source/docs-gen/src/glossary.md ADDED
@@ -0,0 +1,417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Glossary of Terms
2
+
3
+ ## aberration
4
+ The apparent angular displacement of a celestial object from its geometric position, caused by the motion of the observer with respect to the object, and the finite speed of light.
5
+
6
+ ## age of Moon
7
+ The angle between the Sun and the Moon measured at the Earth.
8
+
9
+ ## altitude
10
+ The angle up from the horizon.
11
+
12
+ ## annual equation
13
+ A correction of the Moon’s orbital motion due to the variation of the Sun–Earth distance as the Earth travels in its own ellipse about the Sun.
14
+
15
+ ## anomaly
16
+ The angle at the focus or the centre of an orbital ellipse between the major axis and the orbiting body or its projection.
17
+
18
+ ## apastron
19
+ The point in an orbit about a star that is furthest from the star.
20
+
21
+ ## aphelion
22
+ The point in an orbit about the Sun most distant from the Sun.
23
+
24
+ ## apogee
25
+ The point in an orbit about the Earth most distant from the Earth.
26
+
27
+ ## Astronomical Almanac
28
+ A collection of tables predicting the positions and circumstances of astronomical phenomena. This title replaced both the _American Ephemeris and Nautical Almanac_ and the _Astronomical Ephemeris_, beginning with the 1981 edition.
29
+
30
+ ## Astronomical Ephemeris
31
+ _see Astronomical Almanac._
32
+
33
+ ## astronomical latitude
34
+ The angle between the astronomical zenith and the equator.
35
+
36
+ ## astronomical unit
37
+ Approximately equal to the length of the semi-major axis of the Earth’s orbit about the Sun, 1.496 × 10 11 metres.
38
+
39
+ ## atmospheric refraction
40
+ The apparent shift in the position of a celestial object due to the bending of light rays by the atmosphere.
41
+
42
+ ## azimuth
43
+ The angle round from the north point measured on the horizon in the sense NESW.
44
+
45
+ ## binary star
46
+ A pair of stars bound together by their mutual gravitational attraction, both in orbit about their common centre of mass.
47
+
48
+ ## calendar
49
+ System of accounting the days in the year. The **Julian calendar**, introduced by Julius Caesar, divides the year into 365 days except for every fourth year which has 366. The **Gregorian calendar**, introduced by Pope Gregory XIII (1502–1585) in 1582 and accepted in England in 1752, is the one generally in use in the West today. It reduced the errors in the Julian calendar by removing three days every four centuries; if the year ends in two noughts it is only a leap year if it is divisible by 400. So, for example, 2000 was a leap year, but 1700, 1800 and 1900 were not. 2100 will not be a leap year either.
50
+
51
+ ## celestial sphere
52
+ An imaginary sphere, usually centred on the Earth, of arbitrarily large radius on the surface of which the stars can be considered to be fixed.
53
+
54
+ ## circumpolar stars
55
+ Stars whose angular distances from the north or south celestial pole are sufficiently small that they never dip below the horizon.
56
+
57
+ ## comet
58
+ A diffuse member of the Solar System, usually with a highly elongated orbit, which becomes visible near the Sun. It has a bright head and one or more diffuse tails of variable length.
59
+
60
+ ## companion star
61
+ The fainter of the pair of stars in a visual-**binary star** system.
62
+
63
+ ## conjunction
64
+ The moment when two celestial bodies occupy the same position in the sky or share a common
65
+ coordinate when viewed from a particular place. Thus **heliocentric conjunction**, and **conjunction in
66
+ right ascension**.
67
+
68
+ ## coordinate systems
69
+ Frames of reference by means of which the position of any point can be uniquely specified. In astronomy, the systems take their names from the fundamental planes on which they are based. Thus the **ecliptic coordinate system** measures longitude round from the first point of Aries, in the plane of the ecliptic and latitude northwards from it. The **equatorial coordinate system** measures right ascension round from Aries in the plane of the Earth’s equator, and declination northwards from it. In the **horizon coordinate system**, the azimuth is measured round from the north point in the sense NESW and the altitude is the angle up from the horizon. The **galactic coordinate system** specifies position by longitude measured in the galactic plane round from the direction of the galactic centre and by latitude
70
+ measured perpendicular to the plane. **Heliographic coordinates** enable the position of an object on the surface of the Sun to be specified with respect to the solar equator and a fundamental meridian assumed to rotate at a uniform rate. **Selenographic coordinates** define positions on the surface of the Moon with
71
+ respect to the lunar equator and the mean **sub-Earth point**.
72
+
73
+ ## coordinated universal time (UTC)
74
+ The time scale available from broadcast time signals. It differs from **International atomic time (TAI)** by a whole number of seconds, and is maintained within 0.9 s of
75
+ universal time (strictly UT1) by the insertion of leap seconds, usually at the ends of June or December.
76
+
77
+ ## culmination
78
+ The moment at which a celestial body crosses the observer’s meridian. Circumpolar stars
79
+ cross the meridian above the horizon twice in one day, giving **upper culmination** and **lower culmination**.
80
+
81
+ ## day
82
+ The interval between two successive transits across the observer’s meridian of a fixed star (**sidereal day**), of the Sun (**solar day**), or of a fictitious body called the mean Sun which moves at a uniform rate along the equator (**mean solar day**).
83
+
84
+ ## daylight saving time
85
+ see **time**.
86
+
87
+ ## declination
88
+ In the equatorial coordinate system, the angle measured perpendicular to the equator (north positive, south negative).
89
+
90
+ ## dynamical time
91
+ The family of time scales introduced in 1984 that replaces **ephemeris time**. See **time**.
92
+
93
+ ## earthshine
94
+ Light reflected from the Earth which sometimes illuminates the dark portion of the Moon’s
95
+ disc, making it visible.
96
+
97
+ ## eccentricity
98
+ A measure of the degree of elongation of an ellipse, equal to the ratio of the distance of the focus from the centre to the length of the **semi-major axis**.
99
+
100
+ ## eclipse
101
+ The passage of the Moon through the Earth’s shadow (**lunar eclipse**) or parts of the Earth through the Moon’s shadow (**solar eclipse**). If, at the moment of greatest eclipse, the Moon or Sun is only partly obscured it is a **partial eclipse**; if completely obscured it is a **total eclipse**. If during a solar eclipse the
102
+ Moon obscures the central part of the Sun’s disc but leaves an unobscured ring around its edge, then it is an **annular eclipse**.
103
+
104
+ ## ecliptic
105
+ The plane containing the orbit of the Earth about the Sun.
106
+
107
+ ## ellipse
108
+ A type of regular closed curve, oval in shape, of which a circle is a special case. It is traced by a point moving in such a manner that it keeps constant the sum of its distances from two fixed points, each of which is called a **focus** of the ellipse. The longest diameter of the ellipse, which goes through both foci and the centre, is called the **major axis**, the portion from the centre to the curve in either direction being called the **semi-major axis**.
109
+
110
+ ## ephemeris time (ET)
111
+ See **time**.
112
+
113
+ ## epoch
114
+ A particular moment specified as the reference point from which time is measured. The dates 1950.0 (strictly 1950 January 0.923) and 2000.0 (2000 January 1.5) are often used as standard epochs.
115
+
116
+ ## equation of the centre
117
+ A relation between the true and mean anomalies which is an approximation to Kepler’s equation. In its simplest form it is
118
+
119
+ _v_ = _M_ + 2_e_ sin _M_,
120
+
121
+ where _v_ and _M_ are expressed in radians, useful for values of _e_ less than about 0.1.
122
+
123
+ ## equation of the equinoxes
124
+ Apparent sidereal time minus mean sidereal time, taking account of the effect of **nutation** on the positions of the **equinoxes**.
125
+
126
+ ## equation of time
127
+ The difference between the real solar time and the mean solar time.
128
+
129
+ ## equator
130
+ The plane through the centre of the Earth which is perpendicular to the spin axis.
131
+
132
+ ## equinox
133
+ The moment at which the Sun crosses the celestial equator. This occurs on about 21 March when its right ascension is zero (the **vernal equinox**) and about 22 September when its right ascension is 12 h (the **autumnal equinox**). The positions of the equinoxes on the celestial sphere lie along the line of the intersection of the planes of the equator and the ecliptic.
134
+
135
+ ## evection
136
+ A correction to the Moon’s orbital motion taking account of slight variations in the apparent value
137
+ of the eccentricity of its orbit.
138
+
139
+ ## extinction
140
+ The attenuation and colouring of light as it travels through a medium; in particular, **atmospheric extinction**.
141
+
142
+ ## figure of the Earth
143
+ The true shape of the Earth. It is often approximated by a **spheroid of revolution**, a geometrical shape in which any cross-section parallel to the equator is a circle, while any cross-section through the north–south axis is an ellipse with the minor axis coincident with the diameter joining the north and south poles.
144
+
145
+ ## first point of Aries
146
+ The position on the celestial sphere of the **vernal equinox**.
147
+
148
+ ## focus of an ellipse
149
+ see **ellipse**.
150
+
151
+ ## geocentric coordinates
152
+ Coordinates measured with respect to the centre of the Earth. Hence the **geocentric latitude** is the angle between the equator and a point on the surface of the Earth, as measured at the centre of the Earth.
153
+
154
+ ## geocentric parallax
155
+ The angle subtended at a heavenly body by the centre of the Earth and the point of observation on the Earth’s surface.
156
+
157
+ ## geostationary satellite
158
+ A body orbiting the Earth in the plane of the equator in such a direction and at such a height that its orbital period equals 1 day so that it keeps constant position with respect to the Earth’s surface.
159
+
160
+ ## GPS time
161
+ An atomic time kept by the US Naval Observatory and broadcast by the satellites of the global positioning system. GPS time was equal to UTC on 1980 January 6 0.0, but, unlike UTC, is not adjusted by the insertion of leap seconds. Hence GPS time is equal, in June 2011, to UTC + 15 seconds (kept to within a microsecond) and is the time you can extract from your GPS navigation device.
162
+
163
+ ## gravity
164
+ The mutual force of attraction between any two bodies which is proportional to the product of their masses and inversely proportional to the square of their separation.
165
+
166
+ ## great circle
167
+ Any circle drawn on the surface of a sphere whose centre is the same as that of the sphere.
168
+
169
+ ## Greenwich mean time (GMT)
170
+ This is ambiguous and is not now used in the _Astronomical Almanac_. Its meaning in civil life is usually the same as UTC, though previously it has been used to mean UT. Before 1925 it was reckoned from Greenwich mean noon (12 h UT).
171
+
172
+ ## Greenwich meridian
173
+ That half of the great circle on the surface of the Earth passing through the north and south poles and through the reference point in Greenwich, England. It is taken as the line of longitude 0◦.
174
+
175
+ ## horizontal parallax
176
+ The geocentric parallax when the celestial body is on the observer’s horizon; hence **equatorial horizontal parallax** when the observer is also on the equator.
177
+
178
+ ## hour angle
179
+ The difference between the local sidereal time and the right ascension.
180
+
181
+ ## inclination of orbit
182
+ The angle between the plane of the orbit and the plane of the ecliptic.
183
+
184
+ ## inner planet
185
+ A planet whose semi-major axis is smaller than that of the Earth; that is the planets Mercury and Venus.
186
+
187
+ ## international atomic time (TAI)
188
+ see **time**.
189
+
190
+ ## Julian date
191
+ The number of Julian days that have elapsed since the fundamental epoch Greenwich mean noon of 1 January 4713 BC. For 2010 January 0.0 its value is 2 455 196.5. The **Julian day number** is the integer part of the Julian date. See also **modified Julian date** (MJD).
192
+
193
+ ## Kepler’s equation
194
+ The relation between the mean and eccentric anomalies, _M_ and _E_,
195
+
196
+ _E_ − _e_sin_E_ = _M_,
197
+
198
+ where the angles are expressed in radians.
199
+
200
+ ## latitude
201
+ The coordinate expressing the angle (north positive, south negative) perpendicular to a fundamental plane, hence **ecliptic latitude** and **galactic latitude**. On the Earth, the **geographical latitude** is measured with respect to the equator. The ecliptic latitude can be measured either at the Earth (**geocentric**) or at the Sun (**heliocentric**).
202
+
203
+ ## librations
204
+ Variations in the orientation of the Moon’s surface with respect to an observer on the Earth.
205
+
206
+ ## light time
207
+ The time it takes light signals from a celestial body to reach an observer.
208
+
209
+ ## longitude
210
+ The coordinate expressing the angle round from a fixed direction measured in a fundamental plane, hence **ecliptic longitude** and **galactic longitude**. On the Earth, the **geographical longitude** is measured at the equator. The ecliptic longitude can be measured either at the Earth (**geocentric**) or at the Sun (**heliocentric**).
211
+
212
+ ## lunation
213
+ The period between two successive new Moons.
214
+
215
+ ## luni–solar precession
216
+ The slow retrograde motion of the first point of Aries along the equator caused by the combined effects of the Sun and the Moon on the slightly non-spherical Earth.
217
+
218
+ ## magnitude
219
+
220
+ (i) the unit defined on a logarithmic scale which measures the brightness of a celestial object considered as a point.
221
+
222
+ (ii) **in a lunar eclipse**, the fraction of the lunar diameter obscured by the shadow of the Earth at the moment of greatest eclipse, measured along the common diameter.
223
+
224
+ (iii) **in a solar eclipse**, the fraction of the solar diameter obscured by the Moon at the moment of greatest eclipse, measured along the common diameter.
225
+
226
+ ## mean Sun
227
+ A fictitious heavenly body that moves at a uniform rate along the equator making one complete circuit in the same time (1 year) as the real Sun takes to make a complete circuit.
228
+
229
+ ## meridian
230
+ That half of a great circle which is terminated at the north and south poles. On the Earth a meridian is a line of longitude. On the celestial sphere, the meridian which passes through the zenith is called the **observer’s meridian**.
231
+
232
+ ## modified Julian date (MJD)
233
+ The number of Julian days elapsed since 1858 November 17.0.
234
+
235
+ ## month
236
+ The period taken by the Moon to make one complete circuit of its orbit from reference point to reference point. The **draconic month** or **nodal month** takes the ascending node as the reference and is equal to 27.212 2 mean solar days. The **sidereal month** is reckoned against the background of stars and is equal to 27.321 7 mean solar days. The Sun is used as the reference for the **synodic month** of 29.530 6 mean solar days, and the perigee for the **anomalistic month** of 27.554 6 mean solar days.
237
+
238
+ ## nadir
239
+ The point on the celestial sphere diametrically opposite the **zenith**.
240
+
241
+ ## node
242
+ A point on the celestial sphere where the great circle representing the orbit cuts the great circle representing the plane of the ecliptic. The point where the orbiting body is moving from below (south of) to above the ecliptic is called the **ascending node**; the other is the **descending node**.
243
+
244
+ ## noon
245
+ The instant at which the Sun crosses the observer’s meridian.
246
+
247
+ ## north celestial pole
248
+ The point at which the projection of the Earth’s rotation axis through the north pole intersects the celestial sphere.
249
+
250
+ ## nutation
251
+ A small periodic wobbling motion of the Earth’s rotation axis.
252
+
253
+ ## obliquity of the ecliptic
254
+ The angle at which the plane of the ecliptic is inclined to the plane of the equator.
255
+
256
+ ## opposition
257
+ The moment when two celestial bodies occupy opposite positions in the sky, or have longitudes different by 180◦ , when viewed at a particular place.
258
+
259
+ ## orbit
260
+ The path through space taken by a body gravitationally attracted to another body.
261
+
262
+ ## orbital elements
263
+ The quantities which need to be known in order to specify an orbit uniquely.
264
+
265
+ ## osculating elements
266
+ The elements describing the elliptical orbit followed by a body if all perturbing influences vanish. Since perturbations disturb the true orbit of any member of the Solar System, the osculating elements are constantly changing.
267
+
268
+ ## outer planet
269
+ Those planets having semi-major axes larger than that of the Earth. The major outer planets are Mars, Jupiter, Saturn, Uranus and Neptune. In 2006, Pluto was reclassified as a dwarf planet by the International Astronomical Union.
270
+
271
+ ## parabolic orbit
272
+ An orbit in which the velocity at any point is equal to the escape velocity.
273
+
274
+ ## parallax
275
+ The amount by which the apparent position of a celestial object shifts as the point of observation is changed.
276
+
277
+ ## penumbra
278
+ The outer portion of a shadow where the light is only partially cut off.
279
+
280
+ ## periastron
281
+ The point in an orbit about a star that is nearest to the star.
282
+
283
+ ## perigee
284
+ The point in an orbit about the Earth which is nearest the Earth.
285
+
286
+ ## perihelion
287
+ The point of closest approach to the Sun in an orbit about the Sun.
288
+
289
+ ## period of orbit
290
+ The time taken by the orbiting body to make one complete circuit.
291
+
292
+ ## perturbations
293
+ Deviations from true elliptical motion caused by the gravitational fields of other members of the Solar System.
294
+
295
+ ## phase
296
+ (i) **of Moon or planet**: the fraction of the area of the disc which is illuminated. When the dark side of the Moon faces the Earth, the phase is zero and it is **new Moon**. At the **first quarter** and the **third quarter**, the phase is equal to a half and the Moon is in **quadrature**. **Full Moon** has a phase equal to one. Whenever the phase is greater than a half, the Moon is described as **gibbous**.
297
+
298
+ (ii) **of an eclipse**: the stage of a lunar or solar eclipse during which the eclipsed body is partly obscured (**partial phase**) or totally obscured (**total phase**). During a lunar eclipse, the Moon is in the penumbra of the Earth’s shadow during the **penumbral phase** and partially or totally in the umbra during the **umbral phase**. The partial and total phases occur during the umbral phase.
299
+
300
+ ## planet
301
+ A solid body in closed orbit about a star. In our own Solar System, the major planets are (in order of increasing distance from the Sun) Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. Pluto, formerly recognised as a planet, was reclassified as a dwarf planet in 2006.
302
+
303
+ ## polar distance
304
+ The angle on the celestial sphere from the celestial pole.
305
+
306
+ ## pole
307
+ The point on a sphere which is perpendicular to a given plane. Hence **pole of the ecliptic** and **pole of the equator** (each has two poles called north and south poles for short).
308
+
309
+ ## position-angle
310
+ A celestial angle measured from 0◦ to 360◦ eastwards from the north.
311
+
312
+ ## precession
313
+ see **luni-solar precession**.
314
+
315
+ ## primary star
316
+ The brighter of the pair of stars in a visual-binary system.
317
+
318
+ ## prograde motion
319
+ Motion in the same sense as that of all the planets about the Sun. When looking down on the Solar System from the north celestial pole, prograde motion is counter-clockwise.
320
+
321
+ ## radian
322
+ A natural unit used to measure angles, equal to 1/2π revolutions and 180/π degrees.
323
+
324
+ ## radius vector
325
+ The line joining the principal focus to the position of the orbiting body on its orbital ellipse.
326
+
327
+ ## reflectivity of planet
328
+ A measure of a planet’s ability to reflect sunlight; a factor affecting its apparent brightness.
329
+
330
+ ## refraction
331
+ see **atmospheric refraction**.
332
+
333
+ ## retrograde motion
334
+ Motion in the opposite sense to that of all the planets about the Sun. When looking down on the Solar System from the north celestial pole, retrograde motion is clockwise.
335
+
336
+ ## right ascension
337
+ In the equatorial coordinate system the angle measured round from the first point of Aries in the plane of the equator, in the sense NWSE.
338
+
339
+ ## rising
340
+ The moment when a celestial body crosses the horizon on the way up.
341
+
342
+ ## Saros cycle
343
+ The period of 18 years 11 days and 8 hours after which the pattern of lunar and solar eclipses tends to repeat.
344
+
345
+ ## second (SI second)
346
+ The unit of time for the **international atomic time (TAI)** scale defined to be exactly 9 192 631 770 cycles of radiation corresponding to the transition between two hyperfine levels in the ground state of caesium 133.
347
+
348
+ ## semi-major axis
349
+ see **ellipse**.
350
+
351
+ ## setting
352
+ The moment when a celestial body crosses the horizon on the way down.
353
+
354
+ ## solar elongation
355
+ The angle between the lines of sight to the Sun and to the celestial body in question.
356
+
357
+ ## Solar System
358
+ The Sun and all the bodies, planets, comets and asteroids in closed orbits about it.
359
+
360
+ ## solstice
361
+ The points at which the apparent longitude of the Sun is 90◦ and 270◦, or the moments at which the Sun is at either of these points. These occur around 21 June and 21 December.
362
+
363
+ ## sub-Earth point
364
+ The point on a celestial body (especially the Moon) where the line joining the centre of the Earth and the centre of the body intersects the surface of the body.
365
+
366
+ ## synodic period
367
+ The time between successive conjunctions in longitude.
368
+
369
+ ## terminator
370
+ The line marking the boundary between the dark and sunlit hemispheres of a member of the Solar System.
371
+
372
+ ## terrestrial dynamical time (TDT)
373
+ see **time**.
374
+
375
+ ## terrestrial time (TT)
376
+ see **time**.
377
+
378
+ ## time
379
+ ### atomic time
380
+ Time measured with respect to the natural period of oscillations of an atomic system. Caesium beam clocks currently constitute the most precise time-keepers available, and the SI unit of atomic time is defined in terms of the caesium 133 atom (see **second**). **International atomic time (TAI)** is the continuous scale resulting from analyses by the Bureau International des Poids et Mesures of atomic time standards in many countries, starting from the epoch 1958 January 1. **Coordinated universal time** (UTC) is the time scale distributed by standard time services and is tied to both TAI and UT in such a manner that (a) it differs from TAI by a whole number of
381
+ seconds, and (b) it is never more than 0.9 s different from UT (strictly UT1). This is achieved by the introduction of leap seconds into UTC from time to time. UTC constitutes the basis for legal time keeping in most parts of the world. **Terrestrial time (TT)** (**called terrestrial dynamic time (TDT)** until 1991) is used as the argument in theories of celestial dynamics and in the compilation of the _Astronomical Almanac_. It is equal to TAI +32.184 s. **TDT** had replaced **ephemeris time (ET)** in 1984, which was itself derived from analyses of the Moon’s motion.
382
+
383
+ ### solar time
384
+ Time measured with respect to the motion of the Sun or a fictitious body, no longer used, called the mean Sun (**mean solar time**). **Universal time (UT)** is, broadly speaking, the mean solar time as measured on the Greenwich meridian. It is formally defined by a mathematical formula as a function of **sidereal time** (see below), and is thus determined from observations of the stars. A direct application of the formula gives UT0; with a small correction for polar motion the scale UT1 is obtained. Whenever the term UT is used, UT1 is usually implied. **British summer time (BST)** is 1 hour ahead of UT and is an example of **daylight saving time** in which the time is adjusted to make the working day fit more conveniently into the daylight hours.
385
+
386
+ ### sidereal time
387
+ Time measured with respect to the apparent motion of the stars. The **local sidereal time** at any place is equal to the hour angle of the first point of Aries; local sidereal time on the Greenwich meridian is called **Greenwich sidereal time**. The difference between **apparent sidereal time** and **mean sidereal time** is called the **equation of the equinoxes**, and takes account of **nutation**. It may be as much as 1.2 seconds.
388
+
389
+ ## time zone
390
+ A longitudinal strip on the surface of the Earth in which the **zone time**, usually a whole number of hours before or after UT, is adopted as the local civil time by national or international agreement.
391
+
392
+ ## transit
393
+ The moment at which a celestial body crosses the observer’s meridian.
394
+
395
+ ## twilight
396
+ That period of semi-darkness after sunset or before sunrise during which the sun’s zenith distance is more than 90◦ but less than some agreed figure. This figure is 108◦ for **astronomical twilight** and 102◦ for **nautical twilight**, while for **civil twilight** it is 96◦.
397
+
398
+ ## umbra
399
+ The inner portion of a shadow where the light is completely obscured.
400
+
401
+ ## universal time
402
+ see **time**.
403
+
404
+ ## variation
405
+ A correction to the Moon’s orbital motion about the Earth that takes account of the changing solar gravitational field.
406
+
407
+ ## vernal equinox
408
+ see **equinox**.
409
+
410
+ ## year
411
+ The interval between two successive passages of the Sun through a reference point. A particular point among the stars is used as reference in the **sidereal year**, equal to 365.2564 mean solar days. The **tropical year**, 365.242 191 mean solar days, uses the first point of Aries as its reference. When no qualifying adjective is used with the word 'year', it is usually the tropical year that is meant. Perturbations to the Earth’s orbit by the other planets cause small changes in the Earth’s orbital elements. The **anomalistic year**, 365.2596 mean solar days, is the interval between two successive passages of the Sun through perigee. The **Besselian year**, not used since 1984, is the period of one complete revolution in right ascension of the fictitious mean Sun as defined by the astronomer Simon Newcomb (1835–1909). It is almost the same as the tropical year, but begins when the right ascension of the Sun is exactly 240◦ ; this instant falls very near the beginning of the **civil year**.
412
+
413
+ ## zenith
414
+ The point directly overhead at the observer. The **zenith angle** or **zenith distance** of a star is the angle between the star and the zenith.
415
+
416
+ ## zone correction
417
+ The number of hours that needs to be added to or subtracted from UT to get the **zone time**.
practical_astronomy/source/docs/README_8md.html ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: /home/jimc/projects/Practical Astronomy/practical-astronomy-python-venv/practical-astronomy-python/README.md File Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('README_8md.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">/home/jimc/projects/Practical Astronomy/practical-astronomy-python-venv/practical-astronomy-python/README.md File Reference</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ </div><!-- contents -->
89
+ </div><!-- doc-content -->
90
+ <!-- start footer part -->
91
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
92
+ <ul>
93
+ <li class="navelem"><a class="el" href="README_8md.html">README.md</a></li>
94
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
95
+ </ul>
96
+ </div>
97
+ </body>
98
+ </html>
practical_astronomy/source/docs/____init_____8py.html ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: /home/jimc/projects/Practical Astronomy/practical-astronomy-python-venv/practical-astronomy-python/src/practical_astronomy/__init__.py File Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('____init_____8py.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="summary">
85
+ <a href="#namespaces">Namespaces</a> </div>
86
+ <div class="headertitle">
87
+ <div class="title">__init__.py File Reference</div> </div>
88
+ </div><!--header-->
89
+ <div class="contents">
90
+ <table class="memberdecls">
91
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
92
+ Namespaces</h2></td></tr>
93
+ <tr class="memitem:namespacepractical__astronomy"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacepractical__astronomy.html">practical_astronomy</a></td></tr>
94
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
95
+ </table>
96
+ </div><!-- contents -->
97
+ </div><!-- doc-content -->
98
+ <!-- start footer part -->
99
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
100
+ <ul>
101
+ <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_45978790aec87fba6f3407586a078612.html">practical_astronomy</a></li><li class="navelem"><a class="el" href="____init_____8py.html">__init__.py</a></li>
102
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
103
+ </ul>
104
+ </div>
105
+ </body>
106
+ </html>
practical_astronomy/source/docs/bc_s.png ADDED
practical_astronomy/source/docs/bdwn.png ADDED
practical_astronomy/source/docs/closed.png ADDED
practical_astronomy/source/docs/dir_45978790aec87fba6f3407586a078612.html ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: /home/jimc/projects/Practical Astronomy/practical-astronomy-python-venv/practical-astronomy-python/src/practical_astronomy Directory Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('dir_45978790aec87fba6f3407586a078612.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">practical_astronomy Directory Reference</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ <table class="memberdecls">
89
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
90
+ Files</h2></td></tr>
91
+ <tr class="memitem:____init_____8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="____init_____8py.html">__init__.py</a></td></tr>
92
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
+ <tr class="memitem:pa__binary_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__binary_8py.html">pa_binary.py</a></td></tr>
94
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
95
+ <tr class="memitem:pa__binary__data_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__binary__data_8py.html">pa_binary_data.py</a></td></tr>
96
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
97
+ <tr class="memitem:pa__comet_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__comet_8py.html">pa_comet.py</a></td></tr>
98
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
99
+ <tr class="memitem:pa__comet__data_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__comet__data_8py.html">pa_comet_data.py</a></td></tr>
100
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
101
+ <tr class="memitem:pa__coordinate_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__coordinate_8py.html">pa_coordinate.py</a></td></tr>
102
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
103
+ <tr class="memitem:pa__datetime_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__datetime_8py.html">pa_datetime.py</a></td></tr>
104
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
+ <tr class="memitem:pa__eclipses_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__eclipses_8py.html">pa_eclipses.py</a></td></tr>
106
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
107
+ <tr class="memitem:pa__macro_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__macro_8py.html">pa_macro.py</a></td></tr>
108
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
+ <tr class="memitem:pa__moon_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__moon_8py.html">pa_moon.py</a></td></tr>
110
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
+ <tr class="memitem:pa__planet_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__planet_8py.html">pa_planet.py</a></td></tr>
112
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
+ <tr class="memitem:pa__planet__data_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__planet__data_8py.html">pa_planet_data.py</a></td></tr>
114
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
115
+ <tr class="memitem:pa__sun_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__sun_8py.html">pa_sun.py</a></td></tr>
116
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
117
+ <tr class="memitem:pa__util_8py"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pa__util_8py.html">pa_util.py</a></td></tr>
118
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
+ </table>
120
+ </div><!-- contents -->
121
+ </div><!-- doc-content -->
122
+ <!-- start footer part -->
123
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
124
+ <ul>
125
+ <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_45978790aec87fba6f3407586a078612.html">practical_astronomy</a></li>
126
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
127
+ </ul>
128
+ </div>
129
+ </body>
130
+ </html>
practical_astronomy/source/docs/dir_45978790aec87fba6f3407586a078612.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var dir_45978790aec87fba6f3407586a078612 =
2
+ [
3
+ [ "__init__.py", "____init_____8py.html", null ],
4
+ [ "pa_binary.py", "pa__binary_8py.html", "pa__binary_8py" ],
5
+ [ "pa_binary_data.py", "pa__binary__data_8py.html", "pa__binary__data_8py" ],
6
+ [ "pa_comet.py", "pa__comet_8py.html", "pa__comet_8py" ],
7
+ [ "pa_comet_data.py", "pa__comet__data_8py.html", "pa__comet__data_8py" ],
8
+ [ "pa_coordinate.py", "pa__coordinate_8py.html", "pa__coordinate_8py" ],
9
+ [ "pa_datetime.py", "pa__datetime_8py.html", "pa__datetime_8py" ],
10
+ [ "pa_eclipses.py", "pa__eclipses_8py.html", "pa__eclipses_8py" ],
11
+ [ "pa_macro.py", "pa__macro_8py.html", "pa__macro_8py" ],
12
+ [ "pa_moon.py", "pa__moon_8py.html", "pa__moon_8py" ],
13
+ [ "pa_planet.py", "pa__planet_8py.html", "pa__planet_8py" ],
14
+ [ "pa_planet_data.py", "pa__planet__data_8py.html", "pa__planet__data_8py" ],
15
+ [ "pa_sun.py", "pa__sun_8py.html", "pa__sun_8py" ],
16
+ [ "pa_util.py", "pa__util_8py.html", "pa__util_8py" ]
17
+ ];
practical_astronomy/source/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: /home/jimc/projects/Practical Astronomy/practical-astronomy-python-venv/practical-astronomy-python/src Directory Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('dir_68267d1309a1af8e8297ef4c3efbcdba.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">src Directory Reference</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ <table class="memberdecls">
89
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
90
+ Directories</h2></td></tr>
91
+ <tr class="memitem:dir_45978790aec87fba6f3407586a078612"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_45978790aec87fba6f3407586a078612.html">practical_astronomy</a></td></tr>
92
+ <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
+ </table>
94
+ </div><!-- contents -->
95
+ </div><!-- doc-content -->
96
+ <!-- start footer part -->
97
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
98
+ <ul>
99
+ <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>
100
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
101
+ </ul>
102
+ </div>
103
+ </body>
104
+ </html>
practical_astronomy/source/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ var dir_68267d1309a1af8e8297ef4c3efbcdba =
2
+ [
3
+ [ "practical_astronomy", "dir_45978790aec87fba6f3407586a078612.html", "dir_45978790aec87fba6f3407586a078612" ]
4
+ ];
practical_astronomy/source/docs/dir_8ebb4883bd5210c1437544ca4cb0df32.html ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: src Directory Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('dir_8ebb4883bd5210c1437544ca4cb0df32.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">src Directory Reference</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ </div><!-- contents -->
89
+ </div><!-- doc-content -->
90
+ <!-- start footer part -->
91
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
92
+ <ul>
93
+ <li class="navelem"><a class="el" href="dir_8ebb4883bd5210c1437544ca4cb0df32.html">src</a></li>
94
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
95
+ </ul>
96
+ </div>
97
+ </body>
98
+ </html>
practical_astronomy/source/docs/doc.png ADDED
practical_astronomy/source/docs/doxygen.css ADDED
@@ -0,0 +1,1793 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* The standard CSS for doxygen 1.9.1 */
2
+
3
+ body, table, div, p, dl {
4
+ font: 400 14px/22px Roboto,sans-serif;
5
+ }
6
+
7
+ p.reference, p.definition {
8
+ font: 400 14px/22px Roboto,sans-serif;
9
+ }
10
+
11
+ /* @group Heading Levels */
12
+
13
+ h1.groupheader {
14
+ font-size: 150%;
15
+ }
16
+
17
+ .title {
18
+ font: 400 14px/28px Roboto,sans-serif;
19
+ font-size: 150%;
20
+ font-weight: bold;
21
+ margin: 10px 2px;
22
+ }
23
+
24
+ h2.groupheader {
25
+ border-bottom: 1px solid #879ECB;
26
+ color: #354C7B;
27
+ font-size: 150%;
28
+ font-weight: normal;
29
+ margin-top: 1.75em;
30
+ padding-top: 8px;
31
+ padding-bottom: 4px;
32
+ width: 100%;
33
+ }
34
+
35
+ h3.groupheader {
36
+ font-size: 100%;
37
+ }
38
+
39
+ h1, h2, h3, h4, h5, h6 {
40
+ -webkit-transition: text-shadow 0.5s linear;
41
+ -moz-transition: text-shadow 0.5s linear;
42
+ -ms-transition: text-shadow 0.5s linear;
43
+ -o-transition: text-shadow 0.5s linear;
44
+ transition: text-shadow 0.5s linear;
45
+ margin-right: 15px;
46
+ }
47
+
48
+ h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
49
+ text-shadow: 0 0 15px cyan;
50
+ }
51
+
52
+ dt {
53
+ font-weight: bold;
54
+ }
55
+
56
+ ul.multicol {
57
+ -moz-column-gap: 1em;
58
+ -webkit-column-gap: 1em;
59
+ column-gap: 1em;
60
+ -moz-column-count: 3;
61
+ -webkit-column-count: 3;
62
+ column-count: 3;
63
+ }
64
+
65
+ p.startli, p.startdd {
66
+ margin-top: 2px;
67
+ }
68
+
69
+ th p.starttd, th p.intertd, th p.endtd {
70
+ font-size: 100%;
71
+ font-weight: 700;
72
+ }
73
+
74
+ p.starttd {
75
+ margin-top: 0px;
76
+ }
77
+
78
+ p.endli {
79
+ margin-bottom: 0px;
80
+ }
81
+
82
+ p.enddd {
83
+ margin-bottom: 4px;
84
+ }
85
+
86
+ p.endtd {
87
+ margin-bottom: 2px;
88
+ }
89
+
90
+ p.interli {
91
+ }
92
+
93
+ p.interdd {
94
+ }
95
+
96
+ p.intertd {
97
+ }
98
+
99
+ /* @end */
100
+
101
+ caption {
102
+ font-weight: bold;
103
+ }
104
+
105
+ span.legend {
106
+ font-size: 70%;
107
+ text-align: center;
108
+ }
109
+
110
+ h3.version {
111
+ font-size: 90%;
112
+ text-align: center;
113
+ }
114
+
115
+ div.navtab {
116
+ border-right: 1px solid #A3B4D7;
117
+ padding-right: 15px;
118
+ text-align: right;
119
+ line-height: 110%;
120
+ }
121
+
122
+ div.navtab table {
123
+ border-spacing: 0;
124
+ }
125
+
126
+ td.navtab {
127
+ padding-right: 6px;
128
+ padding-left: 6px;
129
+ }
130
+ td.navtabHL {
131
+ background-image: url('tab_a.png');
132
+ background-repeat:repeat-x;
133
+ padding-right: 6px;
134
+ padding-left: 6px;
135
+ }
136
+
137
+ td.navtabHL a, td.navtabHL a:visited {
138
+ color: #fff;
139
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
140
+ }
141
+
142
+ a.navtab {
143
+ font-weight: bold;
144
+ }
145
+
146
+ div.qindex{
147
+ text-align: center;
148
+ width: 100%;
149
+ line-height: 140%;
150
+ font-size: 130%;
151
+ color: #A0A0A0;
152
+ }
153
+
154
+ dt.alphachar{
155
+ font-size: 180%;
156
+ font-weight: bold;
157
+ }
158
+
159
+ .alphachar a{
160
+ color: black;
161
+ }
162
+
163
+ .alphachar a:hover, .alphachar a:visited{
164
+ text-decoration: none;
165
+ }
166
+
167
+ .classindex dl {
168
+ padding: 25px;
169
+ column-count:1
170
+ }
171
+
172
+ .classindex dd {
173
+ display:inline-block;
174
+ margin-left: 50px;
175
+ width: 90%;
176
+ line-height: 1.15em;
177
+ }
178
+
179
+ .classindex dl.odd {
180
+ background-color: #F8F9FC;
181
+ }
182
+
183
+ @media(min-width: 1120px) {
184
+ .classindex dl {
185
+ column-count:2
186
+ }
187
+ }
188
+
189
+ @media(min-width: 1320px) {
190
+ .classindex dl {
191
+ column-count:3
192
+ }
193
+ }
194
+
195
+
196
+ /* @group Link Styling */
197
+
198
+ a {
199
+ color: #3D578C;
200
+ font-weight: normal;
201
+ text-decoration: none;
202
+ }
203
+
204
+ .contents a:visited {
205
+ color: #4665A2;
206
+ }
207
+
208
+ a:hover {
209
+ text-decoration: underline;
210
+ }
211
+
212
+ .contents a.qindexHL:visited {
213
+ color: #FFFFFF;
214
+ }
215
+
216
+ a.el {
217
+ font-weight: bold;
218
+ }
219
+
220
+ a.elRef {
221
+ }
222
+
223
+ a.code, a.code:visited, a.line, a.line:visited {
224
+ color: #4665A2;
225
+ }
226
+
227
+ a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
228
+ color: #4665A2;
229
+ }
230
+
231
+ /* @end */
232
+
233
+ dl.el {
234
+ margin-left: -1cm;
235
+ }
236
+
237
+ ul {
238
+ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
239
+ }
240
+
241
+ #side-nav ul {
242
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
243
+ }
244
+
245
+ #main-nav ul {
246
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
247
+ }
248
+
249
+ .fragment {
250
+ text-align: left;
251
+ direction: ltr;
252
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
253
+ overflow-y: hidden;
254
+ }
255
+
256
+ pre.fragment {
257
+ border: 1px solid #C4CFE5;
258
+ background-color: #FBFCFD;
259
+ padding: 4px 6px;
260
+ margin: 4px 8px 4px 2px;
261
+ overflow: auto;
262
+ word-wrap: break-word;
263
+ font-size: 9pt;
264
+ line-height: 125%;
265
+ font-family: monospace, fixed;
266
+ font-size: 105%;
267
+ }
268
+
269
+ div.fragment {
270
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
271
+ margin: 4px 8px 4px 2px;
272
+ background-color: #FBFCFD;
273
+ border: 1px solid #C4CFE5;
274
+ }
275
+
276
+ div.line {
277
+ font-family: monospace, fixed;
278
+ font-size: 13px;
279
+ min-height: 13px;
280
+ line-height: 1.0;
281
+ text-wrap: unrestricted;
282
+ white-space: -moz-pre-wrap; /* Moz */
283
+ white-space: -pre-wrap; /* Opera 4-6 */
284
+ white-space: -o-pre-wrap; /* Opera 7 */
285
+ white-space: pre-wrap; /* CSS3 */
286
+ word-wrap: break-word; /* IE 5.5+ */
287
+ text-indent: -53px;
288
+ padding-left: 53px;
289
+ padding-bottom: 0px;
290
+ margin: 0px;
291
+ -webkit-transition-property: background-color, box-shadow;
292
+ -webkit-transition-duration: 0.5s;
293
+ -moz-transition-property: background-color, box-shadow;
294
+ -moz-transition-duration: 0.5s;
295
+ -ms-transition-property: background-color, box-shadow;
296
+ -ms-transition-duration: 0.5s;
297
+ -o-transition-property: background-color, box-shadow;
298
+ -o-transition-duration: 0.5s;
299
+ transition-property: background-color, box-shadow;
300
+ transition-duration: 0.5s;
301
+ }
302
+
303
+ div.line:after {
304
+ content:"\000A";
305
+ white-space: pre;
306
+ }
307
+
308
+ div.line.glow {
309
+ background-color: cyan;
310
+ box-shadow: 0 0 10px cyan;
311
+ }
312
+
313
+
314
+ span.lineno {
315
+ padding-right: 4px;
316
+ text-align: right;
317
+ border-right: 2px solid #0F0;
318
+ background-color: #E8E8E8;
319
+ white-space: pre;
320
+ }
321
+ span.lineno a {
322
+ background-color: #D8D8D8;
323
+ }
324
+
325
+ span.lineno a:hover {
326
+ background-color: #C8C8C8;
327
+ }
328
+
329
+ .lineno {
330
+ -webkit-touch-callout: none;
331
+ -webkit-user-select: none;
332
+ -khtml-user-select: none;
333
+ -moz-user-select: none;
334
+ -ms-user-select: none;
335
+ user-select: none;
336
+ }
337
+
338
+ div.ah, span.ah {
339
+ background-color: black;
340
+ font-weight: bold;
341
+ color: #FFFFFF;
342
+ margin-bottom: 3px;
343
+ margin-top: 3px;
344
+ padding: 0.2em;
345
+ border: solid thin #333;
346
+ border-radius: 0.5em;
347
+ -webkit-border-radius: .5em;
348
+ -moz-border-radius: .5em;
349
+ box-shadow: 2px 2px 3px #999;
350
+ -webkit-box-shadow: 2px 2px 3px #999;
351
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
352
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
353
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
354
+ }
355
+
356
+ div.classindex ul {
357
+ list-style: none;
358
+ padding-left: 0;
359
+ }
360
+
361
+ div.classindex span.ai {
362
+ display: inline-block;
363
+ }
364
+
365
+ div.groupHeader {
366
+ margin-left: 16px;
367
+ margin-top: 12px;
368
+ font-weight: bold;
369
+ }
370
+
371
+ div.groupText {
372
+ margin-left: 16px;
373
+ font-style: italic;
374
+ }
375
+
376
+ body {
377
+ background-color: white;
378
+ color: black;
379
+ margin: 0;
380
+ }
381
+
382
+ div.contents {
383
+ margin-top: 10px;
384
+ margin-left: 12px;
385
+ margin-right: 8px;
386
+ }
387
+
388
+ td.indexkey {
389
+ background-color: #EBEFF6;
390
+ font-weight: bold;
391
+ border: 1px solid #C4CFE5;
392
+ margin: 2px 0px 2px 0;
393
+ padding: 2px 10px;
394
+ white-space: nowrap;
395
+ vertical-align: top;
396
+ }
397
+
398
+ td.indexvalue {
399
+ background-color: #EBEFF6;
400
+ border: 1px solid #C4CFE5;
401
+ padding: 2px 10px;
402
+ margin: 2px 0px;
403
+ }
404
+
405
+ tr.memlist {
406
+ background-color: #EEF1F7;
407
+ }
408
+
409
+ p.formulaDsp {
410
+ text-align: center;
411
+ }
412
+
413
+ img.formulaDsp {
414
+
415
+ }
416
+
417
+ img.formulaInl, img.inline {
418
+ vertical-align: middle;
419
+ }
420
+
421
+ div.center {
422
+ text-align: center;
423
+ margin-top: 0px;
424
+ margin-bottom: 0px;
425
+ padding: 0px;
426
+ }
427
+
428
+ div.center img {
429
+ border: 0px;
430
+ }
431
+
432
+ address.footer {
433
+ text-align: right;
434
+ padding-right: 12px;
435
+ }
436
+
437
+ img.footer {
438
+ border: 0px;
439
+ vertical-align: middle;
440
+ }
441
+
442
+ /* @group Code Colorization */
443
+
444
+ span.keyword {
445
+ color: #008000
446
+ }
447
+
448
+ span.keywordtype {
449
+ color: #604020
450
+ }
451
+
452
+ span.keywordflow {
453
+ color: #e08000
454
+ }
455
+
456
+ span.comment {
457
+ color: #800000
458
+ }
459
+
460
+ span.preprocessor {
461
+ color: #806020
462
+ }
463
+
464
+ span.stringliteral {
465
+ color: #002080
466
+ }
467
+
468
+ span.charliteral {
469
+ color: #008080
470
+ }
471
+
472
+ span.vhdldigit {
473
+ color: #ff00ff
474
+ }
475
+
476
+ span.vhdlchar {
477
+ color: #000000
478
+ }
479
+
480
+ span.vhdlkeyword {
481
+ color: #700070
482
+ }
483
+
484
+ span.vhdllogic {
485
+ color: #ff0000
486
+ }
487
+
488
+ blockquote {
489
+ background-color: #F7F8FB;
490
+ border-left: 2px solid #9CAFD4;
491
+ margin: 0 24px 0 4px;
492
+ padding: 0 12px 0 16px;
493
+ }
494
+
495
+ blockquote.DocNodeRTL {
496
+ border-left: 0;
497
+ border-right: 2px solid #9CAFD4;
498
+ margin: 0 4px 0 24px;
499
+ padding: 0 16px 0 12px;
500
+ }
501
+
502
+ /* @end */
503
+
504
+ /*
505
+ .search {
506
+ color: #003399;
507
+ font-weight: bold;
508
+ }
509
+
510
+ form.search {
511
+ margin-bottom: 0px;
512
+ margin-top: 0px;
513
+ }
514
+
515
+ input.search {
516
+ font-size: 75%;
517
+ color: #000080;
518
+ font-weight: normal;
519
+ background-color: #e8eef2;
520
+ }
521
+ */
522
+
523
+ td.tiny {
524
+ font-size: 75%;
525
+ }
526
+
527
+ .dirtab {
528
+ padding: 4px;
529
+ border-collapse: collapse;
530
+ border: 1px solid #A3B4D7;
531
+ }
532
+
533
+ th.dirtab {
534
+ background: #EBEFF6;
535
+ font-weight: bold;
536
+ }
537
+
538
+ hr {
539
+ height: 0px;
540
+ border: none;
541
+ border-top: 1px solid #4A6AAA;
542
+ }
543
+
544
+ hr.footer {
545
+ height: 1px;
546
+ }
547
+
548
+ /* @group Member Descriptions */
549
+
550
+ table.memberdecls {
551
+ border-spacing: 0px;
552
+ padding: 0px;
553
+ }
554
+
555
+ .memberdecls td, .fieldtable tr {
556
+ -webkit-transition-property: background-color, box-shadow;
557
+ -webkit-transition-duration: 0.5s;
558
+ -moz-transition-property: background-color, box-shadow;
559
+ -moz-transition-duration: 0.5s;
560
+ -ms-transition-property: background-color, box-shadow;
561
+ -ms-transition-duration: 0.5s;
562
+ -o-transition-property: background-color, box-shadow;
563
+ -o-transition-duration: 0.5s;
564
+ transition-property: background-color, box-shadow;
565
+ transition-duration: 0.5s;
566
+ }
567
+
568
+ .memberdecls td.glow, .fieldtable tr.glow {
569
+ background-color: cyan;
570
+ box-shadow: 0 0 15px cyan;
571
+ }
572
+
573
+ .mdescLeft, .mdescRight,
574
+ .memItemLeft, .memItemRight,
575
+ .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
576
+ background-color: #F9FAFC;
577
+ border: none;
578
+ margin: 4px;
579
+ padding: 1px 0 0 8px;
580
+ }
581
+
582
+ .mdescLeft, .mdescRight {
583
+ padding: 0px 8px 4px 8px;
584
+ color: #555;
585
+ }
586
+
587
+ .memSeparator {
588
+ border-bottom: 1px solid #DEE4F0;
589
+ line-height: 1px;
590
+ margin: 0px;
591
+ padding: 0px;
592
+ }
593
+
594
+ .memItemLeft, .memTemplItemLeft {
595
+ white-space: nowrap;
596
+ }
597
+
598
+ .memItemRight, .memTemplItemRight {
599
+ width: 100%;
600
+ }
601
+
602
+ .memTemplParams {
603
+ color: #4665A2;
604
+ white-space: nowrap;
605
+ font-size: 80%;
606
+ }
607
+
608
+ /* @end */
609
+
610
+ /* @group Member Details */
611
+
612
+ /* Styles for detailed member documentation */
613
+
614
+ .memtitle {
615
+ padding: 8px;
616
+ border-top: 1px solid #A8B8D9;
617
+ border-left: 1px solid #A8B8D9;
618
+ border-right: 1px solid #A8B8D9;
619
+ border-top-right-radius: 4px;
620
+ border-top-left-radius: 4px;
621
+ margin-bottom: -1px;
622
+ background-image: url('nav_f.png');
623
+ background-repeat: repeat-x;
624
+ background-color: #E2E8F2;
625
+ line-height: 1.25;
626
+ font-weight: 300;
627
+ float:left;
628
+ }
629
+
630
+ .permalink
631
+ {
632
+ font-size: 65%;
633
+ display: inline-block;
634
+ vertical-align: middle;
635
+ }
636
+
637
+ .memtemplate {
638
+ font-size: 80%;
639
+ color: #4665A2;
640
+ font-weight: normal;
641
+ margin-left: 9px;
642
+ }
643
+
644
+ .memnav {
645
+ background-color: #EBEFF6;
646
+ border: 1px solid #A3B4D7;
647
+ text-align: center;
648
+ margin: 2px;
649
+ margin-right: 15px;
650
+ padding: 2px;
651
+ }
652
+
653
+ .mempage {
654
+ width: 100%;
655
+ }
656
+
657
+ .memitem {
658
+ padding: 0;
659
+ margin-bottom: 10px;
660
+ margin-right: 5px;
661
+ -webkit-transition: box-shadow 0.5s linear;
662
+ -moz-transition: box-shadow 0.5s linear;
663
+ -ms-transition: box-shadow 0.5s linear;
664
+ -o-transition: box-shadow 0.5s linear;
665
+ transition: box-shadow 0.5s linear;
666
+ display: table !important;
667
+ width: 100%;
668
+ }
669
+
670
+ .memitem.glow {
671
+ box-shadow: 0 0 15px cyan;
672
+ }
673
+
674
+ .memname {
675
+ font-weight: 400;
676
+ margin-left: 6px;
677
+ }
678
+
679
+ .memname td {
680
+ vertical-align: bottom;
681
+ }
682
+
683
+ .memproto, dl.reflist dt {
684
+ border-top: 1px solid #A8B8D9;
685
+ border-left: 1px solid #A8B8D9;
686
+ border-right: 1px solid #A8B8D9;
687
+ padding: 6px 0px 6px 0px;
688
+ color: #253555;
689
+ font-weight: bold;
690
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
691
+ background-color: #DFE5F1;
692
+ /* opera specific markup */
693
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
694
+ border-top-right-radius: 4px;
695
+ /* firefox specific markup */
696
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
697
+ -moz-border-radius-topright: 4px;
698
+ /* webkit specific markup */
699
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
700
+ -webkit-border-top-right-radius: 4px;
701
+
702
+ }
703
+
704
+ .overload {
705
+ font-family: "courier new",courier,monospace;
706
+ font-size: 65%;
707
+ }
708
+
709
+ .memdoc, dl.reflist dd {
710
+ border-bottom: 1px solid #A8B8D9;
711
+ border-left: 1px solid #A8B8D9;
712
+ border-right: 1px solid #A8B8D9;
713
+ padding: 6px 10px 2px 10px;
714
+ background-color: #FBFCFD;
715
+ border-top-width: 0;
716
+ background-image:url('nav_g.png');
717
+ background-repeat:repeat-x;
718
+ background-color: #FFFFFF;
719
+ /* opera specific markup */
720
+ border-bottom-left-radius: 4px;
721
+ border-bottom-right-radius: 4px;
722
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
723
+ /* firefox specific markup */
724
+ -moz-border-radius-bottomleft: 4px;
725
+ -moz-border-radius-bottomright: 4px;
726
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
727
+ /* webkit specific markup */
728
+ -webkit-border-bottom-left-radius: 4px;
729
+ -webkit-border-bottom-right-radius: 4px;
730
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
731
+ }
732
+
733
+ dl.reflist dt {
734
+ padding: 5px;
735
+ }
736
+
737
+ dl.reflist dd {
738
+ margin: 0px 0px 10px 0px;
739
+ padding: 5px;
740
+ }
741
+
742
+ .paramkey {
743
+ text-align: right;
744
+ }
745
+
746
+ .paramtype {
747
+ white-space: nowrap;
748
+ }
749
+
750
+ .paramname {
751
+ color: #602020;
752
+ white-space: nowrap;
753
+ }
754
+ .paramname em {
755
+ font-style: normal;
756
+ }
757
+ .paramname code {
758
+ line-height: 14px;
759
+ }
760
+
761
+ .params, .retval, .exception, .tparams {
762
+ margin-left: 0px;
763
+ padding-left: 0px;
764
+ }
765
+
766
+ .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
767
+ font-weight: bold;
768
+ vertical-align: top;
769
+ }
770
+
771
+ .params .paramtype, .tparams .paramtype {
772
+ font-style: italic;
773
+ vertical-align: top;
774
+ }
775
+
776
+ .params .paramdir, .tparams .paramdir {
777
+ font-family: "courier new",courier,monospace;
778
+ vertical-align: top;
779
+ }
780
+
781
+ table.mlabels {
782
+ border-spacing: 0px;
783
+ }
784
+
785
+ td.mlabels-left {
786
+ width: 100%;
787
+ padding: 0px;
788
+ }
789
+
790
+ td.mlabels-right {
791
+ vertical-align: bottom;
792
+ padding: 0px;
793
+ white-space: nowrap;
794
+ }
795
+
796
+ span.mlabels {
797
+ margin-left: 8px;
798
+ }
799
+
800
+ span.mlabel {
801
+ background-color: #728DC1;
802
+ border-top:1px solid #5373B4;
803
+ border-left:1px solid #5373B4;
804
+ border-right:1px solid #C4CFE5;
805
+ border-bottom:1px solid #C4CFE5;
806
+ text-shadow: none;
807
+ color: white;
808
+ margin-right: 4px;
809
+ padding: 2px 3px;
810
+ border-radius: 3px;
811
+ font-size: 7pt;
812
+ white-space: nowrap;
813
+ vertical-align: middle;
814
+ }
815
+
816
+
817
+
818
+ /* @end */
819
+
820
+ /* these are for tree view inside a (index) page */
821
+
822
+ div.directory {
823
+ margin: 10px 0px;
824
+ border-top: 1px solid #9CAFD4;
825
+ border-bottom: 1px solid #9CAFD4;
826
+ width: 100%;
827
+ }
828
+
829
+ .directory table {
830
+ border-collapse:collapse;
831
+ }
832
+
833
+ .directory td {
834
+ margin: 0px;
835
+ padding: 0px;
836
+ vertical-align: top;
837
+ }
838
+
839
+ .directory td.entry {
840
+ white-space: nowrap;
841
+ padding-right: 6px;
842
+ padding-top: 3px;
843
+ }
844
+
845
+ .directory td.entry a {
846
+ outline:none;
847
+ }
848
+
849
+ .directory td.entry a img {
850
+ border: none;
851
+ }
852
+
853
+ .directory td.desc {
854
+ width: 100%;
855
+ padding-left: 6px;
856
+ padding-right: 6px;
857
+ padding-top: 3px;
858
+ border-left: 1px solid rgba(0,0,0,0.05);
859
+ }
860
+
861
+ .directory tr.even {
862
+ padding-left: 6px;
863
+ background-color: #F7F8FB;
864
+ }
865
+
866
+ .directory img {
867
+ vertical-align: -30%;
868
+ }
869
+
870
+ .directory .levels {
871
+ white-space: nowrap;
872
+ width: 100%;
873
+ text-align: right;
874
+ font-size: 9pt;
875
+ }
876
+
877
+ .directory .levels span {
878
+ cursor: pointer;
879
+ padding-left: 2px;
880
+ padding-right: 2px;
881
+ color: #3D578C;
882
+ }
883
+
884
+ .arrow {
885
+ color: #9CAFD4;
886
+ -webkit-user-select: none;
887
+ -khtml-user-select: none;
888
+ -moz-user-select: none;
889
+ -ms-user-select: none;
890
+ user-select: none;
891
+ cursor: pointer;
892
+ font-size: 80%;
893
+ display: inline-block;
894
+ width: 16px;
895
+ height: 22px;
896
+ }
897
+
898
+ .icon {
899
+ font-family: Arial, Helvetica;
900
+ font-weight: bold;
901
+ font-size: 12px;
902
+ height: 14px;
903
+ width: 16px;
904
+ display: inline-block;
905
+ background-color: #728DC1;
906
+ color: white;
907
+ text-align: center;
908
+ border-radius: 4px;
909
+ margin-left: 2px;
910
+ margin-right: 2px;
911
+ }
912
+
913
+ .icona {
914
+ width: 24px;
915
+ height: 22px;
916
+ display: inline-block;
917
+ }
918
+
919
+ .iconfopen {
920
+ width: 24px;
921
+ height: 18px;
922
+ margin-bottom: 4px;
923
+ background-image:url('folderopen.png');
924
+ background-position: 0px -4px;
925
+ background-repeat: repeat-y;
926
+ vertical-align:top;
927
+ display: inline-block;
928
+ }
929
+
930
+ .iconfclosed {
931
+ width: 24px;
932
+ height: 18px;
933
+ margin-bottom: 4px;
934
+ background-image:url('folderclosed.png');
935
+ background-position: 0px -4px;
936
+ background-repeat: repeat-y;
937
+ vertical-align:top;
938
+ display: inline-block;
939
+ }
940
+
941
+ .icondoc {
942
+ width: 24px;
943
+ height: 18px;
944
+ margin-bottom: 4px;
945
+ background-image:url('doc.png');
946
+ background-position: 0px -4px;
947
+ background-repeat: repeat-y;
948
+ vertical-align:top;
949
+ display: inline-block;
950
+ }
951
+
952
+ table.directory {
953
+ font: 400 14px Roboto,sans-serif;
954
+ }
955
+
956
+ /* @end */
957
+
958
+ div.dynheader {
959
+ margin-top: 8px;
960
+ -webkit-touch-callout: none;
961
+ -webkit-user-select: none;
962
+ -khtml-user-select: none;
963
+ -moz-user-select: none;
964
+ -ms-user-select: none;
965
+ user-select: none;
966
+ }
967
+
968
+ address {
969
+ font-style: normal;
970
+ color: #2A3D61;
971
+ }
972
+
973
+ table.doxtable caption {
974
+ caption-side: top;
975
+ }
976
+
977
+ table.doxtable {
978
+ border-collapse:collapse;
979
+ margin-top: 4px;
980
+ margin-bottom: 4px;
981
+ }
982
+
983
+ table.doxtable td, table.doxtable th {
984
+ border: 1px solid #2D4068;
985
+ padding: 3px 7px 2px;
986
+ }
987
+
988
+ table.doxtable th {
989
+ background-color: #374F7F;
990
+ color: #FFFFFF;
991
+ font-size: 110%;
992
+ padding-bottom: 4px;
993
+ padding-top: 5px;
994
+ }
995
+
996
+ table.fieldtable {
997
+ /*width: 100%;*/
998
+ margin-bottom: 10px;
999
+ border: 1px solid #A8B8D9;
1000
+ border-spacing: 0px;
1001
+ -moz-border-radius: 4px;
1002
+ -webkit-border-radius: 4px;
1003
+ border-radius: 4px;
1004
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
1005
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
1006
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
1007
+ }
1008
+
1009
+ .fieldtable td, .fieldtable th {
1010
+ padding: 3px 7px 2px;
1011
+ }
1012
+
1013
+ .fieldtable td.fieldtype, .fieldtable td.fieldname {
1014
+ white-space: nowrap;
1015
+ border-right: 1px solid #A8B8D9;
1016
+ border-bottom: 1px solid #A8B8D9;
1017
+ vertical-align: top;
1018
+ }
1019
+
1020
+ .fieldtable td.fieldname {
1021
+ padding-top: 3px;
1022
+ }
1023
+
1024
+ .fieldtable td.fielddoc {
1025
+ border-bottom: 1px solid #A8B8D9;
1026
+ /*width: 100%;*/
1027
+ }
1028
+
1029
+ .fieldtable td.fielddoc p:first-child {
1030
+ margin-top: 0px;
1031
+ }
1032
+
1033
+ .fieldtable td.fielddoc p:last-child {
1034
+ margin-bottom: 2px;
1035
+ }
1036
+
1037
+ .fieldtable tr:last-child td {
1038
+ border-bottom: none;
1039
+ }
1040
+
1041
+ .fieldtable th {
1042
+ background-image:url('nav_f.png');
1043
+ background-repeat:repeat-x;
1044
+ background-color: #E2E8F2;
1045
+ font-size: 90%;
1046
+ color: #253555;
1047
+ padding-bottom: 4px;
1048
+ padding-top: 5px;
1049
+ text-align:left;
1050
+ font-weight: 400;
1051
+ -moz-border-radius-topleft: 4px;
1052
+ -moz-border-radius-topright: 4px;
1053
+ -webkit-border-top-left-radius: 4px;
1054
+ -webkit-border-top-right-radius: 4px;
1055
+ border-top-left-radius: 4px;
1056
+ border-top-right-radius: 4px;
1057
+ border-bottom: 1px solid #A8B8D9;
1058
+ }
1059
+
1060
+
1061
+ .tabsearch {
1062
+ top: 0px;
1063
+ left: 10px;
1064
+ height: 36px;
1065
+ background-image: url('tab_b.png');
1066
+ z-index: 101;
1067
+ overflow: hidden;
1068
+ font-size: 13px;
1069
+ }
1070
+
1071
+ .navpath ul
1072
+ {
1073
+ font-size: 11px;
1074
+ background-image:url('tab_b.png');
1075
+ background-repeat:repeat-x;
1076
+ background-position: 0 -5px;
1077
+ height:30px;
1078
+ line-height:30px;
1079
+ color:#8AA0CC;
1080
+ border:solid 1px #C2CDE4;
1081
+ overflow:hidden;
1082
+ margin:0px;
1083
+ padding:0px;
1084
+ }
1085
+
1086
+ .navpath li
1087
+ {
1088
+ list-style-type:none;
1089
+ float:left;
1090
+ padding-left:10px;
1091
+ padding-right:15px;
1092
+ background-image:url('bc_s.png');
1093
+ background-repeat:no-repeat;
1094
+ background-position:right;
1095
+ color:#364D7C;
1096
+ }
1097
+
1098
+ .navpath li.navelem a
1099
+ {
1100
+ height:32px;
1101
+ display:block;
1102
+ text-decoration: none;
1103
+ outline: none;
1104
+ color: #283A5D;
1105
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
1106
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
1107
+ text-decoration: none;
1108
+ }
1109
+
1110
+ .navpath li.navelem a:hover
1111
+ {
1112
+ color:#6884BD;
1113
+ }
1114
+
1115
+ .navpath li.footer
1116
+ {
1117
+ list-style-type:none;
1118
+ float:right;
1119
+ padding-left:10px;
1120
+ padding-right:15px;
1121
+ background-image:none;
1122
+ background-repeat:no-repeat;
1123
+ background-position:right;
1124
+ color:#364D7C;
1125
+ font-size: 8pt;
1126
+ }
1127
+
1128
+
1129
+ div.summary
1130
+ {
1131
+ float: right;
1132
+ font-size: 8pt;
1133
+ padding-right: 5px;
1134
+ width: 50%;
1135
+ text-align: right;
1136
+ }
1137
+
1138
+ div.summary a
1139
+ {
1140
+ white-space: nowrap;
1141
+ }
1142
+
1143
+ table.classindex
1144
+ {
1145
+ margin: 10px;
1146
+ white-space: nowrap;
1147
+ margin-left: 3%;
1148
+ margin-right: 3%;
1149
+ width: 94%;
1150
+ border: 0;
1151
+ border-spacing: 0;
1152
+ padding: 0;
1153
+ }
1154
+
1155
+ div.ingroups
1156
+ {
1157
+ font-size: 8pt;
1158
+ width: 50%;
1159
+ text-align: left;
1160
+ }
1161
+
1162
+ div.ingroups a
1163
+ {
1164
+ white-space: nowrap;
1165
+ }
1166
+
1167
+ div.header
1168
+ {
1169
+ background-image:url('nav_h.png');
1170
+ background-repeat:repeat-x;
1171
+ background-color: #F9FAFC;
1172
+ margin: 0px;
1173
+ border-bottom: 1px solid #C4CFE5;
1174
+ }
1175
+
1176
+ div.headertitle
1177
+ {
1178
+ padding: 5px 5px 5px 10px;
1179
+ }
1180
+
1181
+ .PageDocRTL-title div.headertitle {
1182
+ text-align: right;
1183
+ direction: rtl;
1184
+ }
1185
+
1186
+ dl {
1187
+ padding: 0 0 0 0;
1188
+ }
1189
+
1190
+ /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
1191
+ dl.section {
1192
+ margin-left: 0px;
1193
+ padding-left: 0px;
1194
+ }
1195
+
1196
+ dl.section.DocNodeRTL {
1197
+ margin-right: 0px;
1198
+ padding-right: 0px;
1199
+ }
1200
+
1201
+ dl.note {
1202
+ margin-left: -7px;
1203
+ padding-left: 3px;
1204
+ border-left: 4px solid;
1205
+ border-color: #D0C000;
1206
+ }
1207
+
1208
+ dl.note.DocNodeRTL {
1209
+ margin-left: 0;
1210
+ padding-left: 0;
1211
+ border-left: 0;
1212
+ margin-right: -7px;
1213
+ padding-right: 3px;
1214
+ border-right: 4px solid;
1215
+ border-color: #D0C000;
1216
+ }
1217
+
1218
+ dl.warning, dl.attention {
1219
+ margin-left: -7px;
1220
+ padding-left: 3px;
1221
+ border-left: 4px solid;
1222
+ border-color: #FF0000;
1223
+ }
1224
+
1225
+ dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
1226
+ margin-left: 0;
1227
+ padding-left: 0;
1228
+ border-left: 0;
1229
+ margin-right: -7px;
1230
+ padding-right: 3px;
1231
+ border-right: 4px solid;
1232
+ border-color: #FF0000;
1233
+ }
1234
+
1235
+ dl.pre, dl.post, dl.invariant {
1236
+ margin-left: -7px;
1237
+ padding-left: 3px;
1238
+ border-left: 4px solid;
1239
+ border-color: #00D000;
1240
+ }
1241
+
1242
+ dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
1243
+ margin-left: 0;
1244
+ padding-left: 0;
1245
+ border-left: 0;
1246
+ margin-right: -7px;
1247
+ padding-right: 3px;
1248
+ border-right: 4px solid;
1249
+ border-color: #00D000;
1250
+ }
1251
+
1252
+ dl.deprecated {
1253
+ margin-left: -7px;
1254
+ padding-left: 3px;
1255
+ border-left: 4px solid;
1256
+ border-color: #505050;
1257
+ }
1258
+
1259
+ dl.deprecated.DocNodeRTL {
1260
+ margin-left: 0;
1261
+ padding-left: 0;
1262
+ border-left: 0;
1263
+ margin-right: -7px;
1264
+ padding-right: 3px;
1265
+ border-right: 4px solid;
1266
+ border-color: #505050;
1267
+ }
1268
+
1269
+ dl.todo {
1270
+ margin-left: -7px;
1271
+ padding-left: 3px;
1272
+ border-left: 4px solid;
1273
+ border-color: #00C0E0;
1274
+ }
1275
+
1276
+ dl.todo.DocNodeRTL {
1277
+ margin-left: 0;
1278
+ padding-left: 0;
1279
+ border-left: 0;
1280
+ margin-right: -7px;
1281
+ padding-right: 3px;
1282
+ border-right: 4px solid;
1283
+ border-color: #00C0E0;
1284
+ }
1285
+
1286
+ dl.test {
1287
+ margin-left: -7px;
1288
+ padding-left: 3px;
1289
+ border-left: 4px solid;
1290
+ border-color: #3030E0;
1291
+ }
1292
+
1293
+ dl.test.DocNodeRTL {
1294
+ margin-left: 0;
1295
+ padding-left: 0;
1296
+ border-left: 0;
1297
+ margin-right: -7px;
1298
+ padding-right: 3px;
1299
+ border-right: 4px solid;
1300
+ border-color: #3030E0;
1301
+ }
1302
+
1303
+ dl.bug {
1304
+ margin-left: -7px;
1305
+ padding-left: 3px;
1306
+ border-left: 4px solid;
1307
+ border-color: #C08050;
1308
+ }
1309
+
1310
+ dl.bug.DocNodeRTL {
1311
+ margin-left: 0;
1312
+ padding-left: 0;
1313
+ border-left: 0;
1314
+ margin-right: -7px;
1315
+ padding-right: 3px;
1316
+ border-right: 4px solid;
1317
+ border-color: #C08050;
1318
+ }
1319
+
1320
+ dl.section dd {
1321
+ margin-bottom: 6px;
1322
+ }
1323
+
1324
+
1325
+ #projectlogo
1326
+ {
1327
+ text-align: center;
1328
+ vertical-align: bottom;
1329
+ border-collapse: separate;
1330
+ }
1331
+
1332
+ #projectlogo img
1333
+ {
1334
+ border: 0px none;
1335
+ }
1336
+
1337
+ #projectalign
1338
+ {
1339
+ vertical-align: middle;
1340
+ }
1341
+
1342
+ #projectname
1343
+ {
1344
+ font: 300% Tahoma, Arial,sans-serif;
1345
+ margin: 0px;
1346
+ padding: 2px 0px;
1347
+ }
1348
+
1349
+ #projectbrief
1350
+ {
1351
+ font: 120% Tahoma, Arial,sans-serif;
1352
+ margin: 0px;
1353
+ padding: 0px;
1354
+ }
1355
+
1356
+ #projectnumber
1357
+ {
1358
+ font: 50% Tahoma, Arial,sans-serif;
1359
+ margin: 0px;
1360
+ padding: 0px;
1361
+ }
1362
+
1363
+ #titlearea
1364
+ {
1365
+ padding: 0px;
1366
+ margin: 0px;
1367
+ width: 100%;
1368
+ border-bottom: 1px solid #5373B4;
1369
+ }
1370
+
1371
+ .image
1372
+ {
1373
+ text-align: center;
1374
+ }
1375
+
1376
+ .dotgraph
1377
+ {
1378
+ text-align: center;
1379
+ }
1380
+
1381
+ .mscgraph
1382
+ {
1383
+ text-align: center;
1384
+ }
1385
+
1386
+ .plantumlgraph
1387
+ {
1388
+ text-align: center;
1389
+ }
1390
+
1391
+ .diagraph
1392
+ {
1393
+ text-align: center;
1394
+ }
1395
+
1396
+ .caption
1397
+ {
1398
+ font-weight: bold;
1399
+ }
1400
+
1401
+ div.zoom
1402
+ {
1403
+ border: 1px solid #90A5CE;
1404
+ }
1405
+
1406
+ dl.citelist {
1407
+ margin-bottom:50px;
1408
+ }
1409
+
1410
+ dl.citelist dt {
1411
+ color:#334975;
1412
+ float:left;
1413
+ font-weight:bold;
1414
+ margin-right:10px;
1415
+ padding:5px;
1416
+ text-align:right;
1417
+ width:52px;
1418
+ }
1419
+
1420
+ dl.citelist dd {
1421
+ margin:2px 0 2px 72px;
1422
+ padding:5px 0;
1423
+ }
1424
+
1425
+ div.toc {
1426
+ padding: 14px 25px;
1427
+ background-color: #F4F6FA;
1428
+ border: 1px solid #D8DFEE;
1429
+ border-radius: 7px 7px 7px 7px;
1430
+ float: right;
1431
+ height: auto;
1432
+ margin: 0 8px 10px 10px;
1433
+ width: 200px;
1434
+ }
1435
+
1436
+ .PageDocRTL-title div.toc {
1437
+ float: left !important;
1438
+ text-align: right;
1439
+ }
1440
+
1441
+ div.toc li {
1442
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
1443
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
1444
+ margin-top: 5px;
1445
+ padding-left: 10px;
1446
+ padding-top: 2px;
1447
+ }
1448
+
1449
+ .PageDocRTL-title div.toc li {
1450
+ background-position-x: right !important;
1451
+ padding-left: 0 !important;
1452
+ padding-right: 10px;
1453
+ }
1454
+
1455
+ div.toc h3 {
1456
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
1457
+ color: #4665A2;
1458
+ border-bottom: 0 none;
1459
+ margin: 0;
1460
+ }
1461
+
1462
+ div.toc ul {
1463
+ list-style: none outside none;
1464
+ border: medium none;
1465
+ padding: 0px;
1466
+ }
1467
+
1468
+ div.toc li.level1 {
1469
+ margin-left: 0px;
1470
+ }
1471
+
1472
+ div.toc li.level2 {
1473
+ margin-left: 15px;
1474
+ }
1475
+
1476
+ div.toc li.level3 {
1477
+ margin-left: 30px;
1478
+ }
1479
+
1480
+ div.toc li.level4 {
1481
+ margin-left: 45px;
1482
+ }
1483
+
1484
+ span.emoji {
1485
+ /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
1486
+ * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
1487
+ */
1488
+ }
1489
+
1490
+ .PageDocRTL-title div.toc li.level1 {
1491
+ margin-left: 0 !important;
1492
+ margin-right: 0;
1493
+ }
1494
+
1495
+ .PageDocRTL-title div.toc li.level2 {
1496
+ margin-left: 0 !important;
1497
+ margin-right: 15px;
1498
+ }
1499
+
1500
+ .PageDocRTL-title div.toc li.level3 {
1501
+ margin-left: 0 !important;
1502
+ margin-right: 30px;
1503
+ }
1504
+
1505
+ .PageDocRTL-title div.toc li.level4 {
1506
+ margin-left: 0 !important;
1507
+ margin-right: 45px;
1508
+ }
1509
+
1510
+ .inherit_header {
1511
+ font-weight: bold;
1512
+ color: gray;
1513
+ cursor: pointer;
1514
+ -webkit-touch-callout: none;
1515
+ -webkit-user-select: none;
1516
+ -khtml-user-select: none;
1517
+ -moz-user-select: none;
1518
+ -ms-user-select: none;
1519
+ user-select: none;
1520
+ }
1521
+
1522
+ .inherit_header td {
1523
+ padding: 6px 0px 2px 5px;
1524
+ }
1525
+
1526
+ .inherit {
1527
+ display: none;
1528
+ }
1529
+
1530
+ tr.heading h2 {
1531
+ margin-top: 12px;
1532
+ margin-bottom: 4px;
1533
+ }
1534
+
1535
+ /* tooltip related style info */
1536
+
1537
+ .ttc {
1538
+ position: absolute;
1539
+ display: none;
1540
+ }
1541
+
1542
+ #powerTip {
1543
+ cursor: default;
1544
+ white-space: nowrap;
1545
+ background-color: white;
1546
+ border: 1px solid gray;
1547
+ border-radius: 4px 4px 4px 4px;
1548
+ box-shadow: 1px 1px 7px gray;
1549
+ display: none;
1550
+ font-size: smaller;
1551
+ max-width: 80%;
1552
+ opacity: 0.9;
1553
+ padding: 1ex 1em 1em;
1554
+ position: absolute;
1555
+ z-index: 2147483647;
1556
+ }
1557
+
1558
+ #powerTip div.ttdoc {
1559
+ color: grey;
1560
+ font-style: italic;
1561
+ }
1562
+
1563
+ #powerTip div.ttname a {
1564
+ font-weight: bold;
1565
+ }
1566
+
1567
+ #powerTip div.ttname {
1568
+ font-weight: bold;
1569
+ }
1570
+
1571
+ #powerTip div.ttdeci {
1572
+ color: #006318;
1573
+ }
1574
+
1575
+ #powerTip div {
1576
+ margin: 0px;
1577
+ padding: 0px;
1578
+ font: 12px/16px Roboto,sans-serif;
1579
+ }
1580
+
1581
+ #powerTip:before, #powerTip:after {
1582
+ content: "";
1583
+ position: absolute;
1584
+ margin: 0px;
1585
+ }
1586
+
1587
+ #powerTip.n:after, #powerTip.n:before,
1588
+ #powerTip.s:after, #powerTip.s:before,
1589
+ #powerTip.w:after, #powerTip.w:before,
1590
+ #powerTip.e:after, #powerTip.e:before,
1591
+ #powerTip.ne:after, #powerTip.ne:before,
1592
+ #powerTip.se:after, #powerTip.se:before,
1593
+ #powerTip.nw:after, #powerTip.nw:before,
1594
+ #powerTip.sw:after, #powerTip.sw:before {
1595
+ border: solid transparent;
1596
+ content: " ";
1597
+ height: 0;
1598
+ width: 0;
1599
+ position: absolute;
1600
+ }
1601
+
1602
+ #powerTip.n:after, #powerTip.s:after,
1603
+ #powerTip.w:after, #powerTip.e:after,
1604
+ #powerTip.nw:after, #powerTip.ne:after,
1605
+ #powerTip.sw:after, #powerTip.se:after {
1606
+ border-color: rgba(255, 255, 255, 0);
1607
+ }
1608
+
1609
+ #powerTip.n:before, #powerTip.s:before,
1610
+ #powerTip.w:before, #powerTip.e:before,
1611
+ #powerTip.nw:before, #powerTip.ne:before,
1612
+ #powerTip.sw:before, #powerTip.se:before {
1613
+ border-color: rgba(128, 128, 128, 0);
1614
+ }
1615
+
1616
+ #powerTip.n:after, #powerTip.n:before,
1617
+ #powerTip.ne:after, #powerTip.ne:before,
1618
+ #powerTip.nw:after, #powerTip.nw:before {
1619
+ top: 100%;
1620
+ }
1621
+
1622
+ #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
1623
+ border-top-color: #FFFFFF;
1624
+ border-width: 10px;
1625
+ margin: 0px -10px;
1626
+ }
1627
+ #powerTip.n:before {
1628
+ border-top-color: #808080;
1629
+ border-width: 11px;
1630
+ margin: 0px -11px;
1631
+ }
1632
+ #powerTip.n:after, #powerTip.n:before {
1633
+ left: 50%;
1634
+ }
1635
+
1636
+ #powerTip.nw:after, #powerTip.nw:before {
1637
+ right: 14px;
1638
+ }
1639
+
1640
+ #powerTip.ne:after, #powerTip.ne:before {
1641
+ left: 14px;
1642
+ }
1643
+
1644
+ #powerTip.s:after, #powerTip.s:before,
1645
+ #powerTip.se:after, #powerTip.se:before,
1646
+ #powerTip.sw:after, #powerTip.sw:before {
1647
+ bottom: 100%;
1648
+ }
1649
+
1650
+ #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
1651
+ border-bottom-color: #FFFFFF;
1652
+ border-width: 10px;
1653
+ margin: 0px -10px;
1654
+ }
1655
+
1656
+ #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
1657
+ border-bottom-color: #808080;
1658
+ border-width: 11px;
1659
+ margin: 0px -11px;
1660
+ }
1661
+
1662
+ #powerTip.s:after, #powerTip.s:before {
1663
+ left: 50%;
1664
+ }
1665
+
1666
+ #powerTip.sw:after, #powerTip.sw:before {
1667
+ right: 14px;
1668
+ }
1669
+
1670
+ #powerTip.se:after, #powerTip.se:before {
1671
+ left: 14px;
1672
+ }
1673
+
1674
+ #powerTip.e:after, #powerTip.e:before {
1675
+ left: 100%;
1676
+ }
1677
+ #powerTip.e:after {
1678
+ border-left-color: #FFFFFF;
1679
+ border-width: 10px;
1680
+ top: 50%;
1681
+ margin-top: -10px;
1682
+ }
1683
+ #powerTip.e:before {
1684
+ border-left-color: #808080;
1685
+ border-width: 11px;
1686
+ top: 50%;
1687
+ margin-top: -11px;
1688
+ }
1689
+
1690
+ #powerTip.w:after, #powerTip.w:before {
1691
+ right: 100%;
1692
+ }
1693
+ #powerTip.w:after {
1694
+ border-right-color: #FFFFFF;
1695
+ border-width: 10px;
1696
+ top: 50%;
1697
+ margin-top: -10px;
1698
+ }
1699
+ #powerTip.w:before {
1700
+ border-right-color: #808080;
1701
+ border-width: 11px;
1702
+ top: 50%;
1703
+ margin-top: -11px;
1704
+ }
1705
+
1706
+ @media print
1707
+ {
1708
+ #top { display: none; }
1709
+ #side-nav { display: none; }
1710
+ #nav-path { display: none; }
1711
+ body { overflow:visible; }
1712
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
1713
+ .summary { display: none; }
1714
+ .memitem { page-break-inside: avoid; }
1715
+ #doc-content
1716
+ {
1717
+ margin-left:0 !important;
1718
+ height:auto !important;
1719
+ width:auto !important;
1720
+ overflow:inherit;
1721
+ display:inline;
1722
+ }
1723
+ }
1724
+
1725
+ /* @group Markdown */
1726
+
1727
+ table.markdownTable {
1728
+ border-collapse:collapse;
1729
+ margin-top: 4px;
1730
+ margin-bottom: 4px;
1731
+ }
1732
+
1733
+ table.markdownTable td, table.markdownTable th {
1734
+ border: 1px solid #2D4068;
1735
+ padding: 3px 7px 2px;
1736
+ }
1737
+
1738
+ table.markdownTable tr {
1739
+ }
1740
+
1741
+ th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
1742
+ background-color: #374F7F;
1743
+ color: #FFFFFF;
1744
+ font-size: 110%;
1745
+ padding-bottom: 4px;
1746
+ padding-top: 5px;
1747
+ }
1748
+
1749
+ th.markdownTableHeadLeft, td.markdownTableBodyLeft {
1750
+ text-align: left
1751
+ }
1752
+
1753
+ th.markdownTableHeadRight, td.markdownTableBodyRight {
1754
+ text-align: right
1755
+ }
1756
+
1757
+ th.markdownTableHeadCenter, td.markdownTableBodyCenter {
1758
+ text-align: center
1759
+ }
1760
+
1761
+ .DocNodeRTL {
1762
+ text-align: right;
1763
+ direction: rtl;
1764
+ }
1765
+
1766
+ .DocNodeLTR {
1767
+ text-align: left;
1768
+ direction: ltr;
1769
+ }
1770
+
1771
+ table.DocNodeRTL {
1772
+ width: auto;
1773
+ margin-right: 0;
1774
+ margin-left: auto;
1775
+ }
1776
+
1777
+ table.DocNodeLTR {
1778
+ width: auto;
1779
+ margin-right: auto;
1780
+ margin-left: 0;
1781
+ }
1782
+
1783
+ tt, code, kbd, samp
1784
+ {
1785
+ display: inline-block;
1786
+ direction:ltr;
1787
+ }
1788
+ /* @end */
1789
+
1790
+ u {
1791
+ text-decoration: underline;
1792
+ }
1793
+
practical_astronomy/source/docs/doxygen.svg ADDED
practical_astronomy/source/docs/dynsections.js ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ @licstart The following is the entire license notice for the JavaScript code in this file.
3
+
4
+ The MIT License (MIT)
5
+
6
+ Copyright (C) 1997-2020 by Dimitri van Heesch
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
10
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
11
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all copies or
15
+ substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ @licend The above is the entire license notice for the JavaScript code in this file
24
+ */
25
+ function toggleVisibility(linkObj)
26
+ {
27
+ var base = $(linkObj).attr('id');
28
+ var summary = $('#'+base+'-summary');
29
+ var content = $('#'+base+'-content');
30
+ var trigger = $('#'+base+'-trigger');
31
+ var src=$(trigger).attr('src');
32
+ if (content.is(':visible')===true) {
33
+ content.hide();
34
+ summary.show();
35
+ $(linkObj).addClass('closed').removeClass('opened');
36
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
37
+ } else {
38
+ content.show();
39
+ summary.hide();
40
+ $(linkObj).removeClass('closed').addClass('opened');
41
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
42
+ }
43
+ return false;
44
+ }
45
+
46
+ function updateStripes()
47
+ {
48
+ $('table.directory tr').
49
+ removeClass('even').filter(':visible:even').addClass('even');
50
+ }
51
+
52
+ function toggleLevel(level)
53
+ {
54
+ $('table.directory tr').each(function() {
55
+ var l = this.id.split('_').length-1;
56
+ var i = $('#img'+this.id.substring(3));
57
+ var a = $('#arr'+this.id.substring(3));
58
+ if (l<level+1) {
59
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
60
+ a.html('&#9660;');
61
+ $(this).show();
62
+ } else if (l==level+1) {
63
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
64
+ a.html('&#9658;');
65
+ $(this).show();
66
+ } else {
67
+ $(this).hide();
68
+ }
69
+ });
70
+ updateStripes();
71
+ }
72
+
73
+ function toggleFolder(id)
74
+ {
75
+ // the clicked row
76
+ var currentRow = $('#row_'+id);
77
+
78
+ // all rows after the clicked row
79
+ var rows = currentRow.nextAll("tr");
80
+
81
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
82
+
83
+ // only match elements AFTER this one (can't hide elements before)
84
+ var childRows = rows.filter(function() { return this.id.match(re); });
85
+
86
+ // first row is visible we are HIDING
87
+ if (childRows.filter(':first').is(':visible')===true) {
88
+ // replace down arrow by right arrow for current row
89
+ var currentRowSpans = currentRow.find("span");
90
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
91
+ currentRowSpans.filter(".arrow").html('&#9658;');
92
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
93
+ } else { // we are SHOWING
94
+ // replace right arrow by down arrow for current row
95
+ var currentRowSpans = currentRow.find("span");
96
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
97
+ currentRowSpans.filter(".arrow").html('&#9660;');
98
+ // replace down arrows by right arrows for child rows
99
+ var childRowsSpans = childRows.find("span");
100
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
101
+ childRowsSpans.filter(".arrow").html('&#9658;');
102
+ childRows.show(); //show all children
103
+ }
104
+ updateStripes();
105
+ }
106
+
107
+
108
+ function toggleInherit(id)
109
+ {
110
+ var rows = $('tr.inherit.'+id);
111
+ var img = $('tr.inherit_header.'+id+' img');
112
+ var src = $(img).attr('src');
113
+ if (rows.filter(':first').is(':visible')===true) {
114
+ rows.css('display','none');
115
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
116
+ } else {
117
+ rows.css('display','table-row'); // using show() causes jump in firefox
118
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
119
+ }
120
+ }
121
+ /* @license-end */
practical_astronomy/source/docs/files.html ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: File List</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('files.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">File List</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ <div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
89
+ <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
90
+ <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="iconfclosed"></span><a class="el" href="dir_8ebb4883bd5210c1437544ca4cb0df32.html" target="_self">src</a></td><td class="desc"></td></tr>
91
+ <tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
92
+ <tr id="row_1_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span id="img_1_0_" class="iconfopen" onclick="toggleFolder('1_0_')">&#160;</span><a class="el" href="dir_45978790aec87fba6f3407586a078612.html" target="_self">practical_astronomy</a></td><td class="desc"></td></tr>
93
+ <tr id="row_1_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="____init_____8py.html" target="_self">__init__.py</a></td><td class="desc"></td></tr>
94
+ <tr id="row_1_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__binary_8py.html" target="_self">pa_binary.py</a></td><td class="desc"></td></tr>
95
+ <tr id="row_1_0_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__binary__data_8py.html" target="_self">pa_binary_data.py</a></td><td class="desc"></td></tr>
96
+ <tr id="row_1_0_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__comet_8py.html" target="_self">pa_comet.py</a></td><td class="desc"></td></tr>
97
+ <tr id="row_1_0_4_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__comet__data_8py.html" target="_self">pa_comet_data.py</a></td><td class="desc"></td></tr>
98
+ <tr id="row_1_0_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__coordinate_8py.html" target="_self">pa_coordinate.py</a></td><td class="desc"></td></tr>
99
+ <tr id="row_1_0_6_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__datetime_8py.html" target="_self">pa_datetime.py</a></td><td class="desc"></td></tr>
100
+ <tr id="row_1_0_7_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__eclipses_8py.html" target="_self">pa_eclipses.py</a></td><td class="desc"></td></tr>
101
+ <tr id="row_1_0_8_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__macro_8py.html" target="_self">pa_macro.py</a></td><td class="desc"></td></tr>
102
+ <tr id="row_1_0_9_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__moon_8py.html" target="_self">pa_moon.py</a></td><td class="desc"></td></tr>
103
+ <tr id="row_1_0_10_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__planet_8py.html" target="_self">pa_planet.py</a></td><td class="desc"></td></tr>
104
+ <tr id="row_1_0_11_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__planet__data_8py.html" target="_self">pa_planet_data.py</a></td><td class="desc"></td></tr>
105
+ <tr id="row_1_0_12_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__sun_8py.html" target="_self">pa_sun.py</a></td><td class="desc"></td></tr>
106
+ <tr id="row_1_0_13_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="pa__util_8py.html" target="_self">pa_util.py</a></td><td class="desc"></td></tr>
107
+ </table>
108
+ </div><!-- directory -->
109
+ </div><!-- contents -->
110
+ </div><!-- doc-content -->
111
+ <!-- start footer part -->
112
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
113
+ <ul>
114
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
115
+ </ul>
116
+ </div>
117
+ </body>
118
+ </html>
practical_astronomy/source/docs/files_dup.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ var files_dup =
2
+ [
3
+ [ "src", "dir_8ebb4883bd5210c1437544ca4cb0df32.html", null ],
4
+ [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ]
5
+ ];
practical_astronomy/source/docs/folderclosed.png ADDED
practical_astronomy/source/docs/folderopen.png ADDED
practical_astronomy/source/docs/glossary_8md.html ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: src/glossary.md File Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('glossary_8md.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">src/glossary.md File Reference</div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ </div><!-- contents -->
89
+ </div><!-- doc-content -->
90
+ <!-- start footer part -->
91
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
92
+ <ul>
93
+ <li class="navelem"><a class="el" href="glossary_8md.html">glossary.md</a></li>
94
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
95
+ </ul>
96
+ </div>
97
+ </body>
98
+ </html>
practical_astronomy/source/docs/index.html ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: practical-astronomy-python</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('index.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="PageDoc"><div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">practical-astronomy-python </div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ <div class="textblock"><p><a class="anchor" id="md__home_jimc_projects_Practical_Astronomy_practical_astronomy_python_venv_practical_astronomy_python_README"></a> Algorithms from <a href="https://www.amazon.com/Practical-Astronomy-your-Calculator-Spreadsheet/dp/1108436072">Practical Astronomy with your Calculator or Spreadsheet</a> by Peter Duffett-Smith, implemented in Python 3. API documentation is published <a href="https://jfcarr.github.io/practical-astronomy-python/">here</a>.</p>
89
+ <p>If you're interested in this topic, please buy the book! It provides far more detail and context.</p>
90
+ <h1><a class="anchor" id="autotoc_md133"></a>
91
+ Quick Start</h1>
92
+ <p>Install:</p>
93
+ <div class="fragment"><div class="line">pip install practical-astronomy</div>
94
+ </div><!-- fragment --><p>Create <code>easter.py</code>:</p>
95
+ <div class="fragment"><div class="line">import practical_astronomy.pa_datetime as pd</div>
96
+ <div class="line"> </div>
97
+ <div class="line">print(pd.get_date_of_easter(2024))</div>
98
+ </div><!-- fragment --><p>Run it:</p>
99
+ <div class="fragment"><div class="line">python easter.py</div>
100
+ </div><!-- fragment --><p>Result:</p>
101
+ <div class="fragment"><div class="line">(3, 31, 2024)</div>
102
+ </div><!-- fragment --><h1><a class="anchor" id="autotoc_md134"></a>
103
+ Unit Tests</h1>
104
+ <p>If you clone the <a href="https://github.com/jfcarr/practical-astronomy-python">repo</a> locally, you can run unit tests with the Make utility:</p>
105
+ <div class="fragment"><div class="line">make all-tests</div>
106
+ </div><!-- fragment --><h1><a class="anchor" id="autotoc_md135"></a>
107
+ Library Functions</h1>
108
+ <p>Documentation <a href="https://jfcarr.github.io/practical-astronomy-python/">here</a>.</p>
109
+ <h2><a class="anchor" id="autotoc_md136"></a>
110
+ Date/Time</h2>
111
+ <table class="markdownTable">
112
+ <tr class="markdownTableHead">
113
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
114
+ <tr class="markdownTableRowOdd">
115
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Date of Easter </td></tr>
116
+ <tr class="markdownTableRowEven">
117
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Civil Date to Day Number </td></tr>
118
+ <tr class="markdownTableRowOdd">
119
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Greenwich Date &lt;-&gt; Julian Date </td></tr>
120
+ <tr class="markdownTableRowEven">
121
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Julian Date to Day-of-Week </td></tr>
122
+ <tr class="markdownTableRowOdd">
123
+ <td class="markdownTableBodyNone">Extract </td><td class="markdownTableBodyNone">Day, Month, and Year parts of Julian Date </td></tr>
124
+ <tr class="markdownTableRowEven">
125
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Civil Time &lt;-&gt; Decimal Hours </td></tr>
126
+ <tr class="markdownTableRowOdd">
127
+ <td class="markdownTableBodyNone">Extract </td><td class="markdownTableBodyNone">Hour, Minutes, and Seconds parts of Decimal Hours </td></tr>
128
+ <tr class="markdownTableRowEven">
129
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Local Civil Time &lt;-&gt; Universal Time </td></tr>
130
+ <tr class="markdownTableRowOdd">
131
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Universal Time &lt;-&gt; Greenwich Sidereal Time </td></tr>
132
+ <tr class="markdownTableRowEven">
133
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Greenwich Sidereal Time &lt;-&gt; Local Sidereal Time </td></tr>
134
+ </table>
135
+ <h2><a class="anchor" id="autotoc_md137"></a>
136
+ Coordinates</h2>
137
+ <table class="markdownTable">
138
+ <tr class="markdownTableHead">
139
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
140
+ <tr class="markdownTableRowOdd">
141
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Angle &lt;-&gt; Decimal Degrees </td></tr>
142
+ <tr class="markdownTableRowEven">
143
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Right Ascension &lt;-&gt; Hour Angle </td></tr>
144
+ <tr class="markdownTableRowOdd">
145
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Equatorial Coordinates &lt;-&gt; Horizon Coordinates </td></tr>
146
+ <tr class="markdownTableRowEven">
147
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Obliquity of the Ecliptic </td></tr>
148
+ <tr class="markdownTableRowOdd">
149
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Ecliptic Coordinates &lt;-&gt; Equatorial Coordinates </td></tr>
150
+ <tr class="markdownTableRowEven">
151
+ <td class="markdownTableBodyNone">Convert </td><td class="markdownTableBodyNone">Equatorial Coordinates &lt;-&gt; Galactic Coordinates </td></tr>
152
+ <tr class="markdownTableRowOdd">
153
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Angle between two objects </td></tr>
154
+ <tr class="markdownTableRowEven">
155
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Rising and Setting times for an object </td></tr>
156
+ <tr class="markdownTableRowOdd">
157
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Precession (corrected coordinates between two epochs) </td></tr>
158
+ <tr class="markdownTableRowEven">
159
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Nutation (in ecliptic longitude and obliquity) for a Greenwich date </td></tr>
160
+ <tr class="markdownTableRowOdd">
161
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Effects of aberration for ecliptic coordinates </td></tr>
162
+ <tr class="markdownTableRowEven">
163
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">RA and Declination values, corrected for atmospheric refraction and geocentric parallax </td></tr>
164
+ <tr class="markdownTableRowOdd">
165
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Heliographic coordinates </td></tr>
166
+ <tr class="markdownTableRowEven">
167
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Carrington rotation number </td></tr>
168
+ <tr class="markdownTableRowOdd">
169
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Selenographic (lunar) coordinates (sub-Earth and sub-Solar) </td></tr>
170
+ </table>
171
+ <h2><a class="anchor" id="autotoc_md138"></a>
172
+ The Sun</h2>
173
+ <table class="markdownTable">
174
+ <tr class="markdownTableHead">
175
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
176
+ <tr class="markdownTableRowOdd">
177
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Approximate and precise positions of the Sun </td></tr>
178
+ <tr class="markdownTableRowEven">
179
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Sun's distance and angular size </td></tr>
180
+ <tr class="markdownTableRowOdd">
181
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Local sunrise and sunset </td></tr>
182
+ <tr class="markdownTableRowEven">
183
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Morning and evening twilight </td></tr>
184
+ <tr class="markdownTableRowOdd">
185
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Equation of time </td></tr>
186
+ <tr class="markdownTableRowEven">
187
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Solar elongation </td></tr>
188
+ </table>
189
+ <h2><a class="anchor" id="autotoc_md139"></a>
190
+ Planets</h2>
191
+ <table class="markdownTable">
192
+ <tr class="markdownTableHead">
193
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
194
+ <tr class="markdownTableRowOdd">
195
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Approximate and precise position of planet </td></tr>
196
+ <tr class="markdownTableRowEven">
197
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Visual aspects of planet (distance, angular diameter, phase, light time, position angle of bright limb, and apparent magnitude) </td></tr>
198
+ <tr class="markdownTableRowOdd">
199
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Position of comet (elliptical and parabolic) </td></tr>
200
+ <tr class="markdownTableRowEven">
201
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Binary star orbit data </td></tr>
202
+ </table>
203
+ <h2><a class="anchor" id="autotoc_md140"></a>
204
+ The Moon</h2>
205
+ <table class="markdownTable">
206
+ <tr class="markdownTableHead">
207
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
208
+ <tr class="markdownTableRowOdd">
209
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Approximate and precise position of Moon </td></tr>
210
+ <tr class="markdownTableRowEven">
211
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Moon phase and position angle of bright limb </td></tr>
212
+ <tr class="markdownTableRowOdd">
213
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Times of new Moon and full Moon </td></tr>
214
+ <tr class="markdownTableRowEven">
215
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Moon's distance, angular diameter, and horizontal parallax </td></tr>
216
+ <tr class="markdownTableRowOdd">
217
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Local moonrise and moonset </td></tr>
218
+ </table>
219
+ <h2><a class="anchor" id="autotoc_md141"></a>
220
+ Eclipses</h2>
221
+ <table class="markdownTable">
222
+ <tr class="markdownTableHead">
223
+ <th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
224
+ <tr class="markdownTableRowOdd">
225
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Lunar eclipse occurrence and circumstances </td></tr>
226
+ <tr class="markdownTableRowEven">
227
+ <td class="markdownTableBodyNone">Calculate </td><td class="markdownTableBodyNone">Solar eclipse occurrence and circumstances </td></tr>
228
+ </table>
229
+ </div></div><!-- PageDoc -->
230
+ </div><!-- contents -->
231
+ </div><!-- doc-content -->
232
+ <!-- start footer part -->
233
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
234
+ <ul>
235
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
236
+ </ul>
237
+ </div>
238
+ </body>
239
+ </html>
practical_astronomy/source/docs/jquery.js ADDED
The diff for this file is too large to render. See raw diff
 
practical_astronomy/source/docs/md_src_glossary.html ADDED
@@ -0,0 +1,497 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.9.1"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Practical Astronomy: Glossary of Terms</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="navtree.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="resize.js"></script>
14
+ <script type="text/javascript" src="navtreedata.js"></script>
15
+ <script type="text/javascript" src="navtree.js"></script>
16
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
17
+ <script type="text/javascript" src="search/searchdata.js"></script>
18
+ <script type="text/javascript" src="search/search.js"></script>
19
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
20
+ </head>
21
+ <body>
22
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
23
+ <div id="titlearea">
24
+ <table cellspacing="0" cellpadding="0">
25
+ <tbody>
26
+ <tr style="height: 56px;">
27
+ <td id="projectalign" style="padding-left: 0.5em;">
28
+ <div id="projectname">Practical Astronomy
29
+ </div>
30
+ </td>
31
+ </tr>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <!-- end header part -->
36
+ <!-- Generated by Doxygen 1.9.1 -->
37
+ <script type="text/javascript">
38
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
39
+ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
40
+ /* @license-end */
41
+ </script>
42
+ <script type="text/javascript" src="menudata.js"></script>
43
+ <script type="text/javascript" src="menu.js"></script>
44
+ <script type="text/javascript">
45
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
46
+ $(function() {
47
+ initMenu('',true,false,'search.php','Search');
48
+ $(document).ready(function() { init_search(); });
49
+ });
50
+ /* @license-end */</script>
51
+ <div id="main-nav"></div>
52
+ </div><!-- top -->
53
+ <div id="side-nav" class="ui-resizable side-nav-resizable">
54
+ <div id="nav-tree">
55
+ <div id="nav-tree-contents">
56
+ <div id="nav-sync" class="sync"></div>
57
+ </div>
58
+ </div>
59
+ <div id="splitbar" style="-moz-user-select:none;"
60
+ class="ui-resizable-handle">
61
+ </div>
62
+ </div>
63
+ <script type="text/javascript">
64
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
65
+ $(document).ready(function(){initNavTree('md_src_glossary.html',''); initResizable(); });
66
+ /* @license-end */
67
+ </script>
68
+ <div id="doc-content">
69
+ <!-- window showing the filter options -->
70
+ <div id="MSearchSelectWindow"
71
+ onmouseover="return searchBox.OnSearchSelectShow()"
72
+ onmouseout="return searchBox.OnSearchSelectHide()"
73
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+ </div>
75
+
76
+ <!-- iframe showing the search results (closed by default) -->
77
+ <div id="MSearchResultsWindow">
78
+ <iframe src="javascript:void(0)" frameborder="0"
79
+ name="MSearchResults" id="MSearchResults">
80
+ </iframe>
81
+ </div>
82
+
83
+ <div class="PageDoc"><div class="header">
84
+ <div class="headertitle">
85
+ <div class="title">Glossary of Terms </div> </div>
86
+ </div><!--header-->
87
+ <div class="contents">
88
+ <div class="textblock"><h1><a class="anchor" id="autotoc_md1"></a>
89
+ aberration</h1>
90
+ <p>The apparent angular displacement of a celestial object from its geometric position, caused by the motion of the observer with respect to the object, and the finite speed of light.</p>
91
+ <h1><a class="anchor" id="autotoc_md2"></a>
92
+ age of Moon</h1>
93
+ <p>The angle between the Sun and the Moon measured at the Earth.</p>
94
+ <h1><a class="anchor" id="autotoc_md3"></a>
95
+ altitude</h1>
96
+ <p>The angle up from the horizon.</p>
97
+ <h1><a class="anchor" id="autotoc_md4"></a>
98
+ annual equation</h1>
99
+ <p>A correction of the Moon’s orbital motion due to the variation of the Sun–Earth distance as the Earth travels in its own ellipse about the Sun.</p>
100
+ <h1><a class="anchor" id="autotoc_md5"></a>
101
+ anomaly</h1>
102
+ <p>The angle at the focus or the centre of an orbital ellipse between the major axis and the orbiting body or its projection.</p>
103
+ <h1><a class="anchor" id="autotoc_md6"></a>
104
+ apastron</h1>
105
+ <p>The point in an orbit about a star that is furthest from the star.</p>
106
+ <h1><a class="anchor" id="autotoc_md7"></a>
107
+ aphelion</h1>
108
+ <p>The point in an orbit about the Sun most distant from the Sun.</p>
109
+ <h1><a class="anchor" id="autotoc_md8"></a>
110
+ apogee</h1>
111
+ <p>The point in an orbit about the Earth most distant from the Earth.</p>
112
+ <h1><a class="anchor" id="autotoc_md9"></a>
113
+ Astronomical Almanac</h1>
114
+ <p>A collection of tables predicting the positions and circumstances of astronomical phenomena. This title replaced both the <em>American Ephemeris and Nautical Almanac</em> and the <em>Astronomical Ephemeris</em>, beginning with the 1981 edition.</p>
115
+ <h1><a class="anchor" id="autotoc_md10"></a>
116
+ Astronomical Ephemeris</h1>
117
+ <p><em>see Astronomical Almanac.</em></p>
118
+ <h1><a class="anchor" id="autotoc_md11"></a>
119
+ astronomical latitude</h1>
120
+ <p>The angle between the astronomical zenith and the equator.</p>
121
+ <h1><a class="anchor" id="autotoc_md12"></a>
122
+ astronomical unit</h1>
123
+ <p>Approximately equal to the length of the semi-major axis of the Earth’s orbit about the Sun, 1.496 × 10 11 metres.</p>
124
+ <h1><a class="anchor" id="autotoc_md13"></a>
125
+ atmospheric refraction</h1>
126
+ <p>The apparent shift in the position of a celestial object due to the bending of light rays by the atmosphere.</p>
127
+ <h1><a class="anchor" id="autotoc_md14"></a>
128
+ azimuth</h1>
129
+ <p>The angle round from the north point measured on the horizon in the sense NESW.</p>
130
+ <h1><a class="anchor" id="autotoc_md15"></a>
131
+ binary star</h1>
132
+ <p>A pair of stars bound together by their mutual gravitational attraction, both in orbit about their common centre of mass.</p>
133
+ <h1><a class="anchor" id="autotoc_md16"></a>
134
+ calendar</h1>
135
+ <p>System of accounting the days in the year. The <b>Julian calendar</b>, introduced by Julius Caesar, divides the year into 365 days except for every fourth year which has 366. The <b>Gregorian calendar</b>, introduced by Pope Gregory XIII (1502–1585) in 1582 and accepted in England in 1752, is the one generally in use in the West today. It reduced the errors in the Julian calendar by removing three days every four centuries; if the year ends in two noughts it is only a leap year if it is divisible by 400. So, for example, 2000 was a leap year, but 1700, 1800 and 1900 were not. 2100 will not be a leap year either.</p>
136
+ <h1><a class="anchor" id="autotoc_md17"></a>
137
+ celestial sphere</h1>
138
+ <p>An imaginary sphere, usually centred on the Earth, of arbitrarily large radius on the surface of which the stars can be considered to be fixed.</p>
139
+ <h1><a class="anchor" id="autotoc_md18"></a>
140
+ circumpolar stars</h1>
141
+ <p>Stars whose angular distances from the north or south celestial pole are sufficiently small that they never dip below the horizon.</p>
142
+ <h1><a class="anchor" id="autotoc_md19"></a>
143
+ comet</h1>
144
+ <p>A diffuse member of the Solar System, usually with a highly elongated orbit, which becomes visible near the Sun. It has a bright head and one or more diffuse tails of variable length.</p>
145
+ <h1><a class="anchor" id="autotoc_md20"></a>
146
+ companion star</h1>
147
+ <p>The fainter of the pair of stars in a visual-**binary star** system.</p>
148
+ <h1><a class="anchor" id="autotoc_md21"></a>
149
+ conjunction</h1>
150
+ <p>The moment when two celestial bodies occupy the same position in the sky or share a common coordinate when viewed from a particular place. Thus <b>heliocentric conjunction</b>, and <b>conjunction in right ascension</b>.</p>
151
+ <h1><a class="anchor" id="autotoc_md22"></a>
152
+ coordinate systems</h1>
153
+ <p>Frames of reference by means of which the position of any point can be uniquely specified. In astronomy, the systems take their names from the fundamental planes on which they are based. Thus the <b>ecliptic coordinate system</b> measures longitude round from the first point of Aries, in the plane of the ecliptic and latitude northwards from it. The <b>equatorial coordinate system</b> measures right ascension round from Aries in the plane of the Earth’s equator, and declination northwards from it. In the <b>horizon coordinate system</b>, the azimuth is measured round from the north point in the sense NESW and the altitude is the angle up from the horizon. The <b>galactic coordinate system</b> specifies position by longitude measured in the galactic plane round from the direction of the galactic centre and by latitude measured perpendicular to the plane. <b>Heliographic coordinates</b> enable the position of an object on the surface of the Sun to be specified with respect to the solar equator and a fundamental meridian assumed to rotate at a uniform rate. <b>Selenographic coordinates</b> define positions on the surface of the Moon with respect to the lunar equator and the mean <b>sub-Earth point</b>.</p>
154
+ <h1><a class="anchor" id="autotoc_md23"></a>
155
+ coordinated universal time (UTC)</h1>
156
+ <p>The time scale available from broadcast time signals. It differs from <b>International atomic time (TAI)</b> by a whole number of seconds, and is maintained within 0.9 s of universal time (strictly UT1) by the insertion of leap seconds, usually at the ends of June or December.</p>
157
+ <h1><a class="anchor" id="autotoc_md24"></a>
158
+ culmination</h1>
159
+ <p>The moment at which a celestial body crosses the observer’s meridian. Circumpolar stars cross the meridian above the horizon twice in one day, giving <b>upper culmination</b> and <b>lower culmination</b>.</p>
160
+ <h1><a class="anchor" id="autotoc_md25"></a>
161
+ day</h1>
162
+ <p>The interval between two successive transits across the observer’s meridian of a fixed star (<b>sidereal day</b>), of the Sun (<b>solar day</b>), or of a fictitious body called the mean Sun which moves at a uniform rate along the equator (<b>mean solar day</b>).</p>
163
+ <h1><a class="anchor" id="autotoc_md26"></a>
164
+ daylight saving time</h1>
165
+ <p>see <b>time</b>.</p>
166
+ <h1><a class="anchor" id="autotoc_md27"></a>
167
+ declination</h1>
168
+ <p>In the equatorial coordinate system, the angle measured perpendicular to the equator (north positive, south negative).</p>
169
+ <h1><a class="anchor" id="autotoc_md28"></a>
170
+ dynamical time</h1>
171
+ <p>The family of time scales introduced in 1984 that replaces <b>ephemeris time</b>. See <b>time</b>.</p>
172
+ <h1><a class="anchor" id="autotoc_md29"></a>
173
+ earthshine</h1>
174
+ <p>Light reflected from the Earth which sometimes illuminates the dark portion of the Moon’s disc, making it visible.</p>
175
+ <h1><a class="anchor" id="autotoc_md30"></a>
176
+ eccentricity</h1>
177
+ <p>A measure of the degree of elongation of an ellipse, equal to the ratio of the distance of the focus from the centre to the length of the <b>semi-major axis</b>.</p>
178
+ <h1><a class="anchor" id="autotoc_md31"></a>
179
+ eclipse</h1>
180
+ <p>The passage of the Moon through the Earth’s shadow (<b>lunar eclipse</b>) or parts of the Earth through the Moon’s shadow (<b>solar eclipse</b>). If, at the moment of greatest eclipse, the Moon or Sun is only partly obscured it is a <b>partial eclipse</b>; if completely obscured it is a <b>total eclipse</b>. If during a solar eclipse the Moon obscures the central part of the Sun’s disc but leaves an unobscured ring around its edge, then it is an <b>annular eclipse</b>.</p>
181
+ <h1><a class="anchor" id="autotoc_md32"></a>
182
+ ecliptic</h1>
183
+ <p>The plane containing the orbit of the Earth about the Sun.</p>
184
+ <h1><a class="anchor" id="autotoc_md33"></a>
185
+ ellipse</h1>
186
+ <p>A type of regular closed curve, oval in shape, of which a circle is a special case. It is traced by a point moving in such a manner that it keeps constant the sum of its distances from two fixed points, each of which is called a <b>focus</b> of the ellipse. The longest diameter of the ellipse, which goes through both foci and the centre, is called the <b>major axis</b>, the portion from the centre to the curve in either direction being called the <b>semi-major axis</b>.</p>
187
+ <h1><a class="anchor" id="autotoc_md34"></a>
188
+ ephemeris time (ET)</h1>
189
+ <p>See <b>time</b>.</p>
190
+ <h1><a class="anchor" id="autotoc_md35"></a>
191
+ epoch</h1>
192
+ <p>A particular moment specified as the reference point from which time is measured. The dates 1950.0 (strictly 1950 January 0.923) and 2000.0 (2000 January 1.5) are often used as standard epochs.</p>
193
+ <h1><a class="anchor" id="autotoc_md36"></a>
194
+ equation of the centre</h1>
195
+ <p>A relation between the true and mean anomalies which is an approximation to Kepler’s equation. In its simplest form it is</p>
196
+ <p><em>v</em> = <em>M</em> + 2_e_ sin <em>M</em>,</p>
197
+ <p>where <em>v</em> and <em>M</em> are expressed in radians, useful for values of <em>e</em> less than about 0.1.</p>
198
+ <h1><a class="anchor" id="autotoc_md37"></a>
199
+ equation of the equinoxes</h1>
200
+ <p>Apparent sidereal time minus mean sidereal time, taking account of the effect of <b>nutation</b> on the positions of the <b>equinoxes</b>.</p>
201
+ <h1><a class="anchor" id="autotoc_md38"></a>
202
+ equation of time</h1>
203
+ <p>The difference between the real solar time and the mean solar time.</p>
204
+ <h1><a class="anchor" id="autotoc_md39"></a>
205
+ equator</h1>
206
+ <p>The plane through the centre of the Earth which is perpendicular to the spin axis.</p>
207
+ <h1><a class="anchor" id="autotoc_md40"></a>
208
+ equinox</h1>
209
+ <p>The moment at which the Sun crosses the celestial equator. This occurs on about 21 March when its right ascension is zero (the <b>vernal equinox</b>) and about 22 September when its right ascension is 12 h (the <b>autumnal equinox</b>). The positions of the equinoxes on the celestial sphere lie along the line of the intersection of the planes of the equator and the ecliptic.</p>
210
+ <h1><a class="anchor" id="autotoc_md41"></a>
211
+ evection</h1>
212
+ <p>A correction to the Moon’s orbital motion taking account of slight variations in the apparent value of the eccentricity of its orbit.</p>
213
+ <h1><a class="anchor" id="autotoc_md42"></a>
214
+ extinction</h1>
215
+ <p>The attenuation and colouring of light as it travels through a medium; in particular, <b>atmospheric extinction</b>.</p>
216
+ <h1><a class="anchor" id="autotoc_md43"></a>
217
+ figure of the Earth</h1>
218
+ <p>The true shape of the Earth. It is often approximated by a <b>spheroid of revolution</b>, a geometrical shape in which any cross-section parallel to the equator is a circle, while any cross-section through the north–south axis is an ellipse with the minor axis coincident with the diameter joining the north and south poles.</p>
219
+ <h1><a class="anchor" id="autotoc_md44"></a>
220
+ first point of Aries</h1>
221
+ <p>The position on the celestial sphere of the <b>vernal equinox</b>.</p>
222
+ <h1><a class="anchor" id="autotoc_md45"></a>
223
+ focus of an ellipse</h1>
224
+ <p>see <b>ellipse</b>.</p>
225
+ <h1><a class="anchor" id="autotoc_md46"></a>
226
+ geocentric coordinates</h1>
227
+ <p>Coordinates measured with respect to the centre of the Earth. Hence the <b>geocentric latitude</b> is the angle between the equator and a point on the surface of the Earth, as measured at the centre of the Earth.</p>
228
+ <h1><a class="anchor" id="autotoc_md47"></a>
229
+ geocentric parallax</h1>
230
+ <p>The angle subtended at a heavenly body by the centre of the Earth and the point of observation on the Earth’s surface.</p>
231
+ <h1><a class="anchor" id="autotoc_md48"></a>
232
+ geostationary satellite</h1>
233
+ <p>A body orbiting the Earth in the plane of the equator in such a direction and at such a height that its orbital period equals 1 day so that it keeps constant position with respect to the Earth’s surface.</p>
234
+ <h1><a class="anchor" id="autotoc_md49"></a>
235
+ GPS time</h1>
236
+ <p>An atomic time kept by the US Naval Observatory and broadcast by the satellites of the global positioning system. GPS time was equal to UTC on 1980 January 6 0.0, but, unlike UTC, is not adjusted by the insertion of leap seconds. Hence GPS time is equal, in June 2011, to UTC + 15 seconds (kept to within a microsecond) and is the time you can extract from your GPS navigation device.</p>
237
+ <h1><a class="anchor" id="autotoc_md50"></a>
238
+ gravity</h1>
239
+ <p>The mutual force of attraction between any two bodies which is proportional to the product of their masses and inversely proportional to the square of their separation.</p>
240
+ <h1><a class="anchor" id="autotoc_md51"></a>
241
+ great circle</h1>
242
+ <p>Any circle drawn on the surface of a sphere whose centre is the same as that of the sphere.</p>
243
+ <h1><a class="anchor" id="autotoc_md52"></a>
244
+ Greenwich mean time (GMT)</h1>
245
+ <p>This is ambiguous and is not now used in the <em>Astronomical Almanac</em>. Its meaning in civil life is usually the same as UTC, though previously it has been used to mean UT. Before 1925 it was reckoned from Greenwich mean noon (12 h UT).</p>
246
+ <h1><a class="anchor" id="autotoc_md53"></a>
247
+ Greenwich meridian</h1>
248
+ <p>That half of the great circle on the surface of the Earth passing through the north and south poles and through the reference point in Greenwich, England. It is taken as the line of longitude 0◦.</p>
249
+ <h1><a class="anchor" id="autotoc_md54"></a>
250
+ horizontal parallax</h1>
251
+ <p>The geocentric parallax when the celestial body is on the observer’s horizon; hence <b>equatorial horizontal parallax</b> when the observer is also on the equator.</p>
252
+ <h1><a class="anchor" id="autotoc_md55"></a>
253
+ hour angle</h1>
254
+ <p>The difference between the local sidereal time and the right ascension.</p>
255
+ <h1><a class="anchor" id="autotoc_md56"></a>
256
+ inclination of orbit</h1>
257
+ <p>The angle between the plane of the orbit and the plane of the ecliptic.</p>
258
+ <h1><a class="anchor" id="autotoc_md57"></a>
259
+ inner planet</h1>
260
+ <p>A planet whose semi-major axis is smaller than that of the Earth; that is the planets Mercury and Venus.</p>
261
+ <h1><a class="anchor" id="autotoc_md58"></a>
262
+ international atomic time (TAI)</h1>
263
+ <p>see <b>time</b>.</p>
264
+ <h1><a class="anchor" id="autotoc_md59"></a>
265
+ Julian date</h1>
266
+ <p>The number of Julian days that have elapsed since the fundamental epoch Greenwich mean noon of 1 January 4713 BC. For 2010 January 0.0 its value is 2 455 196.5. The <b>Julian day number</b> is the integer part of the Julian date. See also <b>modified Julian date</b> (MJD).</p>
267
+ <h1><a class="anchor" id="autotoc_md60"></a>
268
+ Kepler’s equation</h1>
269
+ <p>The relation between the mean and eccentric anomalies, <em>M</em> and <em>E</em>,</p>
270
+ <p><em>E</em> − <em>e_sin_E</em> = <em>M</em>,</p>
271
+ <p>where the angles are expressed in radians.</p>
272
+ <h1><a class="anchor" id="autotoc_md61"></a>
273
+ latitude</h1>
274
+ <p>The coordinate expressing the angle (north positive, south negative) perpendicular to a fundamental plane, hence <b>ecliptic latitude</b> and <b>galactic latitude</b>. On the Earth, the <b>geographical latitude</b> is measured with respect to the equator. The ecliptic latitude can be measured either at the Earth (<b>geocentric</b>) or at the Sun (<b>heliocentric</b>).</p>
275
+ <h1><a class="anchor" id="autotoc_md62"></a>
276
+ librations</h1>
277
+ <p>Variations in the orientation of the Moon’s surface with respect to an observer on the Earth.</p>
278
+ <h1><a class="anchor" id="autotoc_md63"></a>
279
+ light time</h1>
280
+ <p>The time it takes light signals from a celestial body to reach an observer.</p>
281
+ <h1><a class="anchor" id="autotoc_md64"></a>
282
+ longitude</h1>
283
+ <p>The coordinate expressing the angle round from a fixed direction measured in a fundamental plane, hence <b>ecliptic longitude</b> and <b>galactic longitude</b>. On the Earth, the <b>geographical longitude</b> is measured at the equator. The ecliptic longitude can be measured either at the Earth (<b>geocentric</b>) or at the Sun (<b>heliocentric</b>).</p>
284
+ <h1><a class="anchor" id="autotoc_md65"></a>
285
+ lunation</h1>
286
+ <p>The period between two successive new Moons.</p>
287
+ <h1><a class="anchor" id="autotoc_md66"></a>
288
+ luni–solar precession</h1>
289
+ <p>The slow retrograde motion of the first point of Aries along the equator caused by the combined effects of the Sun and the Moon on the slightly non-spherical Earth.</p>
290
+ <h1><a class="anchor" id="autotoc_md67"></a>
291
+ magnitude</h1>
292
+ <p>(i) the unit defined on a logarithmic scale which measures the brightness of a celestial object considered as a point.</p>
293
+ <p>(ii) <b>in a lunar eclipse</b>, the fraction of the lunar diameter obscured by the shadow of the Earth at the moment of greatest eclipse, measured along the common diameter.</p>
294
+ <p>(iii) <b>in a solar eclipse</b>, the fraction of the solar diameter obscured by the Moon at the moment of greatest eclipse, measured along the common diameter.</p>
295
+ <h1><a class="anchor" id="autotoc_md68"></a>
296
+ mean Sun</h1>
297
+ <p>A fictitious heavenly body that moves at a uniform rate along the equator making one complete circuit in the same time (1 year) as the real Sun takes to make a complete circuit.</p>
298
+ <h1><a class="anchor" id="autotoc_md69"></a>
299
+ meridian</h1>
300
+ <p>That half of a great circle which is terminated at the north and south poles. On the Earth a meridian is a line of longitude. On the celestial sphere, the meridian which passes through the zenith is called the <b>observer’s meridian</b>.</p>
301
+ <h1><a class="anchor" id="autotoc_md70"></a>
302
+ modified Julian date (MJD)</h1>
303
+ <p>The number of Julian days elapsed since 1858 November 17.0.</p>
304
+ <h1><a class="anchor" id="autotoc_md71"></a>
305
+ month</h1>
306
+ <p>The period taken by the Moon to make one complete circuit of its orbit from reference point to reference point. The <b>draconic month</b> or <b>nodal month</b> takes the ascending node as the reference and is equal to 27.212 2 mean solar days. The <b>sidereal month</b> is reckoned against the background of stars and is equal to 27.321 7 mean solar days. The Sun is used as the reference for the <b>synodic month</b> of 29.530 6 mean solar days, and the perigee for the <b>anomalistic month</b> of 27.554 6 mean solar days.</p>
307
+ <h1><a class="anchor" id="autotoc_md72"></a>
308
+ nadir</h1>
309
+ <p>The point on the celestial sphere diametrically opposite the <b>zenith</b>.</p>
310
+ <h1><a class="anchor" id="autotoc_md73"></a>
311
+ node</h1>
312
+ <p>A point on the celestial sphere where the great circle representing the orbit cuts the great circle representing the plane of the ecliptic. The point where the orbiting body is moving from below (south of) to above the ecliptic is called the <b>ascending node</b>; the other is the <b>descending node</b>.</p>
313
+ <h1><a class="anchor" id="autotoc_md74"></a>
314
+ noon</h1>
315
+ <p>The instant at which the Sun crosses the observer’s meridian.</p>
316
+ <h1><a class="anchor" id="autotoc_md75"></a>
317
+ north celestial pole</h1>
318
+ <p>The point at which the projection of the Earth’s rotation axis through the north pole intersects the celestial sphere.</p>
319
+ <h1><a class="anchor" id="autotoc_md76"></a>
320
+ nutation</h1>
321
+ <p>A small periodic wobbling motion of the Earth’s rotation axis.</p>
322
+ <h1><a class="anchor" id="autotoc_md77"></a>
323
+ obliquity of the ecliptic</h1>
324
+ <p>The angle at which the plane of the ecliptic is inclined to the plane of the equator.</p>
325
+ <h1><a class="anchor" id="autotoc_md78"></a>
326
+ opposition</h1>
327
+ <p>The moment when two celestial bodies occupy opposite positions in the sky, or have longitudes different by 180◦ , when viewed at a particular place.</p>
328
+ <h1><a class="anchor" id="autotoc_md79"></a>
329
+ orbit</h1>
330
+ <p>The path through space taken by a body gravitationally attracted to another body.</p>
331
+ <h1><a class="anchor" id="autotoc_md80"></a>
332
+ orbital elements</h1>
333
+ <p>The quantities which need to be known in order to specify an orbit uniquely.</p>
334
+ <h1><a class="anchor" id="autotoc_md81"></a>
335
+ osculating elements</h1>
336
+ <p>The elements describing the elliptical orbit followed by a body if all perturbing influences vanish. Since perturbations disturb the true orbit of any member of the Solar System, the osculating elements are constantly changing.</p>
337
+ <h1><a class="anchor" id="autotoc_md82"></a>
338
+ outer planet</h1>
339
+ <p>Those planets having semi-major axes larger than that of the Earth. The major outer planets are Mars, Jupiter, Saturn, Uranus and Neptune. In 2006, Pluto was reclassified as a dwarf planet by the International Astronomical Union.</p>
340
+ <h1><a class="anchor" id="autotoc_md83"></a>
341
+ parabolic orbit</h1>
342
+ <p>An orbit in which the velocity at any point is equal to the escape velocity.</p>
343
+ <h1><a class="anchor" id="autotoc_md84"></a>
344
+ parallax</h1>
345
+ <p>The amount by which the apparent position of a celestial object shifts as the point of observation is changed.</p>
346
+ <h1><a class="anchor" id="autotoc_md85"></a>
347
+ penumbra</h1>
348
+ <p>The outer portion of a shadow where the light is only partially cut off.</p>
349
+ <h1><a class="anchor" id="autotoc_md86"></a>
350
+ periastron</h1>
351
+ <p>The point in an orbit about a star that is nearest to the star.</p>
352
+ <h1><a class="anchor" id="autotoc_md87"></a>
353
+ perigee</h1>
354
+ <p>The point in an orbit about the Earth which is nearest the Earth.</p>
355
+ <h1><a class="anchor" id="autotoc_md88"></a>
356
+ perihelion</h1>
357
+ <p>The point of closest approach to the Sun in an orbit about the Sun.</p>
358
+ <h1><a class="anchor" id="autotoc_md89"></a>
359
+ period of orbit</h1>
360
+ <p>The time taken by the orbiting body to make one complete circuit.</p>
361
+ <h1><a class="anchor" id="autotoc_md90"></a>
362
+ perturbations</h1>
363
+ <p>Deviations from true elliptical motion caused by the gravitational fields of other members of the Solar System.</p>
364
+ <h1><a class="anchor" id="autotoc_md91"></a>
365
+ phase</h1>
366
+ <p>(i) <b>of Moon or planet</b>: the fraction of the area of the disc which is illuminated. When the dark side of the Moon faces the Earth, the phase is zero and it is <b>new Moon</b>. At the <b>first quarter</b> and the <b>third quarter</b>, the phase is equal to a half and the Moon is in <b>quadrature</b>. <b>Full Moon</b> has a phase equal to one. Whenever the phase is greater than a half, the Moon is described as <b>gibbous</b>.</p>
367
+ <p>(ii) <b>of an eclipse</b>: the stage of a lunar or solar eclipse during which the eclipsed body is partly obscured (<b>partial phase</b>) or totally obscured (<b>total phase</b>). During a lunar eclipse, the Moon is in the penumbra of the Earth’s shadow during the <b>penumbral phase</b> and partially or totally in the umbra during the <b>umbral phase</b>. The partial and total phases occur during the umbral phase.</p>
368
+ <h1><a class="anchor" id="autotoc_md92"></a>
369
+ planet</h1>
370
+ <p>A solid body in closed orbit about a star. In our own Solar System, the major planets are (in order of increasing distance from the Sun) Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. Pluto, formerly recognised as a planet, was reclassified as a dwarf planet in 2006.</p>
371
+ <h1><a class="anchor" id="autotoc_md93"></a>
372
+ polar distance</h1>
373
+ <p>The angle on the celestial sphere from the celestial pole.</p>
374
+ <h1><a class="anchor" id="autotoc_md94"></a>
375
+ pole</h1>
376
+ <p>The point on a sphere which is perpendicular to a given plane. Hence <b>pole of the ecliptic</b> and <b>pole of the equator</b> (each has two poles called north and south poles for short).</p>
377
+ <h1><a class="anchor" id="autotoc_md95"></a>
378
+ position-angle</h1>
379
+ <p>A celestial angle measured from 0◦ to 360◦ eastwards from the north.</p>
380
+ <h1><a class="anchor" id="autotoc_md96"></a>
381
+ precession</h1>
382
+ <p>see <b>luni-solar precession</b>.</p>
383
+ <h1><a class="anchor" id="autotoc_md97"></a>
384
+ primary star</h1>
385
+ <p>The brighter of the pair of stars in a visual-binary system.</p>
386
+ <h1><a class="anchor" id="autotoc_md98"></a>
387
+ prograde motion</h1>
388
+ <p>Motion in the same sense as that of all the planets about the Sun. When looking down on the Solar System from the north celestial pole, prograde motion is counter-clockwise.</p>
389
+ <h1><a class="anchor" id="autotoc_md99"></a>
390
+ radian</h1>
391
+ <p>A natural unit used to measure angles, equal to 1/2π revolutions and 180/π degrees.</p>
392
+ <h1><a class="anchor" id="autotoc_md100"></a>
393
+ radius vector</h1>
394
+ <p>The line joining the principal focus to the position of the orbiting body on its orbital ellipse.</p>
395
+ <h1><a class="anchor" id="autotoc_md101"></a>
396
+ reflectivity of planet</h1>
397
+ <p>A measure of a planet’s ability to reflect sunlight; a factor affecting its apparent brightness.</p>
398
+ <h1><a class="anchor" id="autotoc_md102"></a>
399
+ refraction</h1>
400
+ <p>see <b>atmospheric refraction</b>.</p>
401
+ <h1><a class="anchor" id="autotoc_md103"></a>
402
+ retrograde motion</h1>
403
+ <p>Motion in the opposite sense to that of all the planets about the Sun. When looking down on the Solar System from the north celestial pole, retrograde motion is clockwise.</p>
404
+ <h1><a class="anchor" id="autotoc_md104"></a>
405
+ right ascension</h1>
406
+ <p>In the equatorial coordinate system the angle measured round from the first point of Aries in the plane of the equator, in the sense NWSE.</p>
407
+ <h1><a class="anchor" id="autotoc_md105"></a>
408
+ rising</h1>
409
+ <p>The moment when a celestial body crosses the horizon on the way up.</p>
410
+ <h1><a class="anchor" id="autotoc_md106"></a>
411
+ Saros cycle</h1>
412
+ <p>The period of 18 years 11 days and 8 hours after which the pattern of lunar and solar eclipses tends to repeat.</p>
413
+ <h1><a class="anchor" id="autotoc_md107"></a>
414
+ second (SI second)</h1>
415
+ <p>The unit of time for the <b>international atomic time (TAI)</b> scale defined to be exactly 9 192 631 770 cycles of radiation corresponding to the transition between two hyperfine levels in the ground state of caesium 133.</p>
416
+ <h1><a class="anchor" id="autotoc_md108"></a>
417
+ semi-major axis</h1>
418
+ <p>see <b>ellipse</b>.</p>
419
+ <h1><a class="anchor" id="autotoc_md109"></a>
420
+ setting</h1>
421
+ <p>The moment when a celestial body crosses the horizon on the way down.</p>
422
+ <h1><a class="anchor" id="autotoc_md110"></a>
423
+ solar elongation</h1>
424
+ <p>The angle between the lines of sight to the Sun and to the celestial body in question.</p>
425
+ <h1><a class="anchor" id="autotoc_md111"></a>
426
+ Solar System</h1>
427
+ <p>The Sun and all the bodies, planets, comets and asteroids in closed orbits about it.</p>
428
+ <h1><a class="anchor" id="autotoc_md112"></a>
429
+ solstice</h1>
430
+ <p>The points at which the apparent longitude of the Sun is 90◦ and 270◦, or the moments at which the Sun is at either of these points. These occur around 21 June and 21 December.</p>
431
+ <h1><a class="anchor" id="autotoc_md113"></a>
432
+ sub-Earth point</h1>
433
+ <p>The point on a celestial body (especially the Moon) where the line joining the centre of the Earth and the centre of the body intersects the surface of the body.</p>
434
+ <h1><a class="anchor" id="autotoc_md114"></a>
435
+ synodic period</h1>
436
+ <p>The time between successive conjunctions in longitude.</p>
437
+ <h1><a class="anchor" id="autotoc_md115"></a>
438
+ terminator</h1>
439
+ <p>The line marking the boundary between the dark and sunlit hemispheres of a member of the Solar System.</p>
440
+ <h1><a class="anchor" id="autotoc_md116"></a>
441
+ terrestrial dynamical time (TDT)</h1>
442
+ <p>see <b>time</b>.</p>
443
+ <h1><a class="anchor" id="autotoc_md117"></a>
444
+ terrestrial time (TT)</h1>
445
+ <p>see <b>time</b>.</p>
446
+ <h1><a class="anchor" id="autotoc_md118"></a>
447
+ time</h1>
448
+ <h2><a class="anchor" id="autotoc_md119"></a>
449
+ atomic time</h2>
450
+ <p>Time measured with respect to the natural period of oscillations of an atomic system. Caesium beam clocks currently constitute the most precise time-keepers available, and the SI unit of atomic time is defined in terms of the caesium 133 atom (see <b>second</b>). <b>International atomic time (TAI)</b> is the continuous scale resulting from analyses by the Bureau International des Poids et Mesures of atomic time standards in many countries, starting from the epoch 1958 January 1. <b>Coordinated universal time</b> (UTC) is the time scale distributed by standard time services and is tied to both TAI and UT in such a manner that (a) it differs from TAI by a whole number of seconds, and (b) it is never more than 0.9 s different from UT (strictly UT1). This is achieved by the introduction of leap seconds into UTC from time to time. UTC constitutes the basis for legal time keeping in most parts of the world. <b>Terrestrial time (TT)</b> (<b>called terrestrial dynamic time (TDT)</b> until 1991) is used as the argument in theories of celestial dynamics and in the compilation of the <em>Astronomical Almanac</em>. It is equal to TAI +32.184 s. <b>TDT</b> had replaced <b>ephemeris time (ET)</b> in 1984, which was itself derived from analyses of the Moon’s motion.</p>
451
+ <h2><a class="anchor" id="autotoc_md120"></a>
452
+ solar time</h2>
453
+ <p>Time measured with respect to the motion of the Sun or a fictitious body, no longer used, called the mean Sun (<b>mean solar time</b>). <b>Universal time (UT)</b> is, broadly speaking, the mean solar time as measured on the Greenwich meridian. It is formally defined by a mathematical formula as a function of <b>sidereal time</b> (see below), and is thus determined from observations of the stars. A direct application of the formula gives UT0; with a small correction for polar motion the scale UT1 is obtained. Whenever the term UT is used, UT1 is usually implied. <b>British summer time (BST)</b> is 1 hour ahead of UT and is an example of <b>daylight saving time</b> in which the time is adjusted to make the working day fit more conveniently into the daylight hours.</p>
454
+ <h2><a class="anchor" id="autotoc_md121"></a>
455
+ sidereal time</h2>
456
+ <p>Time measured with respect to the apparent motion of the stars. The <b>local sidereal time</b> at any place is equal to the hour angle of the first point of Aries; local sidereal time on the Greenwich meridian is called <b>Greenwich sidereal time</b>. The difference between <b>apparent sidereal time</b> and <b>mean sidereal time</b> is called the <b>equation of the equinoxes</b>, and takes account of <b>nutation</b>. It may be as much as 1.2 seconds.</p>
457
+ <h1><a class="anchor" id="autotoc_md122"></a>
458
+ time zone</h1>
459
+ <p>A longitudinal strip on the surface of the Earth in which the <b>zone time</b>, usually a whole number of hours before or after UT, is adopted as the local civil time by national or international agreement.</p>
460
+ <h1><a class="anchor" id="autotoc_md123"></a>
461
+ transit</h1>
462
+ <p>The moment at which a celestial body crosses the observer’s meridian.</p>
463
+ <h1><a class="anchor" id="autotoc_md124"></a>
464
+ twilight</h1>
465
+ <p>That period of semi-darkness after sunset or before sunrise during which the sun’s zenith distance is more than 90◦ but less than some agreed figure. This figure is 108◦ for <b>astronomical twilight</b> and 102◦ for <b>nautical twilight</b>, while for <b>civil twilight</b> it is 96◦.</p>
466
+ <h1><a class="anchor" id="autotoc_md125"></a>
467
+ umbra</h1>
468
+ <p>The inner portion of a shadow where the light is completely obscured.</p>
469
+ <h1><a class="anchor" id="autotoc_md126"></a>
470
+ universal time</h1>
471
+ <p>see <b>time</b>.</p>
472
+ <h1><a class="anchor" id="autotoc_md127"></a>
473
+ variation</h1>
474
+ <p>A correction to the Moon’s orbital motion about the Earth that takes account of the changing solar gravitational field.</p>
475
+ <h1><a class="anchor" id="autotoc_md128"></a>
476
+ vernal equinox</h1>
477
+ <p>see <b>equinox</b>.</p>
478
+ <h1><a class="anchor" id="autotoc_md129"></a>
479
+ year</h1>
480
+ <p>The interval between two successive passages of the Sun through a reference point. A particular point among the stars is used as reference in the <b>sidereal year</b>, equal to 365.2564 mean solar days. The <b>tropical year</b>, 365.242 191 mean solar days, uses the first point of Aries as its reference. When no qualifying adjective is used with the word 'year', it is usually the tropical year that is meant. Perturbations to the Earth’s orbit by the other planets cause small changes in the Earth’s orbital elements. The <b>anomalistic year</b>, 365.2596 mean solar days, is the interval between two successive passages of the Sun through perigee. The <b>Besselian year</b>, not used since 1984, is the period of one complete revolution in right ascension of the fictitious mean Sun as defined by the astronomer Simon Newcomb (1835–1909). It is almost the same as the tropical year, but begins when the right ascension of the Sun is exactly 240◦ ; this instant falls very near the beginning of the <b>civil year</b>.</p>
481
+ <h1><a class="anchor" id="autotoc_md130"></a>
482
+ zenith</h1>
483
+ <p>The point directly overhead at the observer. The <b>zenith angle</b> or <b>zenith distance</b> of a star is the angle between the star and the zenith.</p>
484
+ <h1><a class="anchor" id="autotoc_md131"></a>
485
+ zone correction</h1>
486
+ <p>The number of hours that needs to be added to or subtracted from UT to get the <b>zone time</b>. </p>
487
+ </div></div><!-- contents -->
488
+ </div><!-- PageDoc -->
489
+ </div><!-- doc-content -->
490
+ <!-- start footer part -->
491
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
492
+ <ul>
493
+ <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
494
+ </ul>
495
+ </div>
496
+ </body>
497
+ </html>
practical_astronomy/source/docs/menu.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ @licstart The following is the entire license notice for the JavaScript code in this file.
3
+
4
+ The MIT License (MIT)
5
+
6
+ Copyright (C) 1997-2020 by Dimitri van Heesch
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
10
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
11
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all copies or
15
+ substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ @licend The above is the entire license notice for the JavaScript code in this file
24
+ */
25
+ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
26
+ function makeTree(data,relPath) {
27
+ var result='';
28
+ if ('children' in data) {
29
+ result+='<ul>';
30
+ for (var i in data.children) {
31
+ result+='<li><a href="'+relPath+data.children[i].url+'">'+
32
+ data.children[i].text+'</a>'+
33
+ makeTree(data.children[i],relPath)+'</li>';
34
+ }
35
+ result+='</ul>';
36
+ }
37
+ return result;
38
+ }
39
+
40
+ $('#main-nav').append(makeTree(menudata,relPath));
41
+ $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
42
+ if (searchEnabled) {
43
+ if (serverSide) {
44
+ $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.svg" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
45
+ } else {
46
+ $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.svg" alt=""/></a></span></div></li>');
47
+ }
48
+ }
49
+ $('#main-menu').smartmenus();
50
+ }
51
+ /* @license-end */
practical_astronomy/source/docs/menudata.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ @licstart The following is the entire license notice for the JavaScript code in this file.
3
+
4
+ The MIT License (MIT)
5
+
6
+ Copyright (C) 1997-2020 by Dimitri van Heesch
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
10
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
11
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all copies or
15
+ substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ @licend The above is the entire license notice for the JavaScript code in this file
24
+ */
25
+ var menudata={children:[
26
+ {text:"Main Page",url:"index.html"},
27
+ {text:"Related Pages",url:"pages.html"},
28
+ {text:"Packages",url:"namespaces.html",children:[
29
+ {text:"Packages",url:"namespaces.html"},
30
+ {text:"Package Functions",url:"namespacemembers.html",children:[
31
+ {text:"All",url:"namespacemembers.html",children:[
32
+ {text:"a",url:"namespacemembers.html#index_a"},
33
+ {text:"b",url:"namespacemembers_b.html#index_b"},
34
+ {text:"c",url:"namespacemembers_c.html#index_c"},
35
+ {text:"d",url:"namespacemembers_d.html#index_d"},
36
+ {text:"e",url:"namespacemembers_e.html#index_e"},
37
+ {text:"f",url:"namespacemembers_f.html#index_f"},
38
+ {text:"g",url:"namespacemembers_g.html#index_g"},
39
+ {text:"h",url:"namespacemembers_h.html#index_h"},
40
+ {text:"i",url:"namespacemembers_i.html#index_i"},
41
+ {text:"j",url:"namespacemembers_j.html#index_j"},
42
+ {text:"k",url:"namespacemembers_k.html#index_k"},
43
+ {text:"l",url:"namespacemembers_l.html#index_l"},
44
+ {text:"m",url:"namespacemembers_m.html#index_m"},
45
+ {text:"n",url:"namespacemembers_n.html#index_n"},
46
+ {text:"o",url:"namespacemembers_o.html#index_o"},
47
+ {text:"p",url:"namespacemembers_p.html#index_p"},
48
+ {text:"r",url:"namespacemembers_r.html#index_r"},
49
+ {text:"s",url:"namespacemembers_s.html#index_s"},
50
+ {text:"t",url:"namespacemembers_t.html#index_t"},
51
+ {text:"u",url:"namespacemembers_u.html#index_u"},
52
+ {text:"v",url:"namespacemembers_v.html#index_v"}]},
53
+ {text:"Functions",url:"namespacemembers_func.html",children:[
54
+ {text:"a",url:"namespacemembers_func.html#index_a"},
55
+ {text:"b",url:"namespacemembers_func_b.html#index_b"},
56
+ {text:"c",url:"namespacemembers_func_c.html#index_c"},
57
+ {text:"d",url:"namespacemembers_func_d.html#index_d"},
58
+ {text:"e",url:"namespacemembers_func_e.html#index_e"},
59
+ {text:"f",url:"namespacemembers_func_f.html#index_f"},
60
+ {text:"g",url:"namespacemembers_func_g.html#index_g"},
61
+ {text:"h",url:"namespacemembers_func_h.html#index_h"},
62
+ {text:"i",url:"namespacemembers_func_i.html#index_i"},
63
+ {text:"j",url:"namespacemembers_func_j.html#index_j"},
64
+ {text:"k",url:"namespacemembers_func_k.html#index_k"},
65
+ {text:"l",url:"namespacemembers_func_l.html#index_l"},
66
+ {text:"m",url:"namespacemembers_func_m.html#index_m"},
67
+ {text:"n",url:"namespacemembers_func_n.html#index_n"},
68
+ {text:"o",url:"namespacemembers_func_o.html#index_o"},
69
+ {text:"p",url:"namespacemembers_func_p.html#index_p"},
70
+ {text:"r",url:"namespacemembers_func_r.html#index_r"},
71
+ {text:"s",url:"namespacemembers_func_s.html#index_s"},
72
+ {text:"t",url:"namespacemembers_func_t.html#index_t"},
73
+ {text:"u",url:"namespacemembers_func_u.html#index_u"},
74
+ {text:"v",url:"namespacemembers_func_v.html#index_v"}]},
75
+ {text:"Variables",url:"namespacemembers_vars.html"}]}]},
76
+ {text:"Files",url:"files.html",children:[
77
+ {text:"File List",url:"files.html"}]}]}