Commit Graph

792 Commits

Author SHA1 Message Date
Don Cross
cb5f4fd998 TOP2013: found better solution using new script 'hunt'.
winner:   0.998305 arcmin :    228 [     37     63     60     58      6      4]

This script keeps running the ray search followed by the nudge search.
If it finds a better solution that the existing one, it replaces it.
Found the above solution after about 30 minutes.
2020-07-05 17:46:46 -04:00
Don Cross
ea989f53a2 TOP2013: Implemented NudgeSearch to make Pluto model even smaller.
0.993372 arcmin :    238 [     41     62     63     63      5      4]
2020-07-05 16:30:20 -04:00
Don Cross
6588e21d72 TOP2013: Relaxed required accuracy to 1 arcminute; some optimizations.
Relax apparent angular error threshold from 0.4 to 1.0 arcminutes.
No longer compare TOP2013 to NOVAS while optimizing.
Use worst-case distance between Earth and Pluto:
Pluto radius from Sun, minus Earth aphelion distance.

Sample 503 points intead of 293.
Measure 2 full orbits before J2000 and 2 full orbits after J2000.

Statistics for output/8.top :
OptimizeTop:    268 terms [     34     57     72     90      9      6]
2020-07-05 13:31:43 -04:00
Don Cross
53050bf939 TOP2013: Generating Pluto data tables in astronomy.c.
Nothing uses the tables yet. Still need to add the calculation code.
2020-07-04 23:02:14 -04:00
Don Cross
9d04a0018c Python: improved Time repr. Added Vector repr, str support. 2020-06-14 21:31:07 -04:00
Don Cross
b6c0b9cb00 Python: added str and repr support for class Observer. 2020-06-14 21:14:53 -04:00
Don Cross
c37ade5ee3 Bumped npm version to 1.1.0 - minor documentation fixes. 2020-06-14 16:55:32 -04:00
Don Cross
2f13b463f1 Fixed two documentation formatting mistakes. 2020-06-14 16:49:02 -04:00
Don Cross
e2cb68e021 Bumped npm version to 1.0.9. 2020-06-14 15:23:28 -04:00
Don Cross
100417dbe3 Fixed #52 - Finished documenting transit functions.
This completes work on eclipses and transits.
2020-06-14 15:05:01 -04:00
Don Cross
f9ef46c5cc Implemented Python version of transit search functions. 2020-06-14 14:55:52 -04:00
Don Cross
b3573c12d7 Implemented JS Transit.
Implemented JavaScript versions of the transit functions.
2020-06-14 13:38:30 -04:00
Don Cross
7fcf730839 Implemented C# Transit functions and unit test. 2020-06-13 21:10:48 -04:00
Don Cross
b32c16b6ad C Transit: made significantly faster. Fixed documentation mistake.
Use much tighter pruning to figure out when a transit might be
possible, based on a smaller angle between the planet and Sun
at the moment of inferior conjunction.
Including aberration makes little difference in the transit calculations,
so I turned that off to be a little more efficient.
2020-06-13 21:07:07 -04:00
Don Cross
456b367c01 C Transit: also report minimum angular separation between planet and Sun. 2020-06-13 16:48:33 -04:00
Don Cross
4f842627da Fixed mistake in GeoVector(SUN): we do need to correct for light-travel time.
To be consistent, when calculating the geocentric position of the Sun,
we do need to correct for light travel time just like we would for any
other object. This reduces the maximum time error for predicting transits
from 25 minutes to 11 minutes.

Also had to disable aberration when calculating moon phases
(longitude from Sun) in order to keep a good fit with test data.
2020-06-13 13:45:59 -04:00
Don Cross
489e98ad5d C Transit in progress. Not quite working yet, but getting close.
Does not pass unit test yet.
I had to rework norm.py because I misunderstood the data format.
The date given is not for the beginning of the transit, but
for the peak. This means the normalized data files need to
keep the start time, peak date/time, and finish time.
The unit test needs to adjust start time and finish time
to make sense with respect to the peak time, by adding/subtracting
a day as needed.
2020-06-12 22:26:20 -04:00
Don Cross
9cdaaa8761 Starting to work on planetary transit calculations.
Wrote stub C functions for finding transits.
Updated html files containing Espenak test data for Mercury, Venus.
Updated norm.py to convert the html files to easy-to-use text files.
2020-06-11 22:17:01 -04:00
Don Cross
fb74b2f331 Published npm package version 1.0.8 2020-06-06 21:51:29 -04:00
Don Cross
84703016e1 Narrow the search window for local solar eclipses. 2020-06-06 14:32:04 -04:00
Don Cross
443c744aaf Implemented Python LocalSolarEclipse. 2020-06-06 13:42:40 -04:00
Don Cross
0a4e0c48a0 Documentation fixes for eclipse functions.
Added global/local solar eclipse functions to topic indexes for
C#, JavaScript, and Python.

Revised wording "eclipse found may be" --> "eclipse may be".

Python:
- Added missing Attributes section in class GlobalSolarEclipseInfo.
- Added classes EclipseEvent, LocalSolarEclipseInfo.
- Added stub functions SearchLocalSolarEclipse, NextLocalSolarEclipse.
2020-06-06 10:42:57 -04:00
Don Cross
d8591c3cd7 Implemented JS LocalSolarEclipse. 2020-06-05 21:40:13 -04:00
Don Cross
3ed2bc3974 Implemented JS GlobalSolarEclipse. 2020-06-05 15:44:42 -04:00
Don Cross
9187e3e966 Python: Implemented GlobalSolarEclipse. 2020-06-04 19:01:39 -04:00
Don Cross
3c5de6b4f9 C: Fixed documentation mistake. 2020-05-26 21:18:50 -04:00
Don Cross
9645ff6cc3 C# LocalSolarEclipse: finished code, but no unit test yet. 2020-05-26 21:09:22 -04:00
Don Cross
26b3a68e00 C# GlobalSolarEclipse: code builds, but no unit test yet. 2020-05-25 22:46:50 -04:00
Don Cross
a8b29b4509 Renamed lunar eclipse info member from 'center' to 'peak'.
This makes the name consistent with the solar eclipse fields.
2020-05-25 21:07:36 -04:00
Don Cross
692744d8b8 C solar eclipse: added documentation in topic index. 2020-05-24 21:00:35 -04:00
Don Cross
1015b503de Fixed bug : wasn't calculating peak time. Not sure why anything worked. 2020-05-24 14:56:53 -04:00
Don Cross
a79ed9a487 C local solar eclipse predictor is passing first batch of unit tests. 2020-05-24 14:05:57 -04:00
Don Cross
8c29661d6f Redesigned local solar eclipse programming interface.
I decided it made more sense to report the Sun's altitude
at each solar eclipse event than reporting sunrise and sunset.
Sunrise and sunset are ambiguous because it's not clear which pair
should be reported. It's also harder to interpret than knowing
whether the Sun is above/below the horizon at each interesting time.
This motivated me to create a new type astro_eclipse_event_t that
holds the (time, altitude) pair for each event.
2020-05-24 10:30:55 -04:00
Don Cross
ef12121621 Starting to implement C version of local solar eclipse.
Defined data structure astro_local_solar_eclipse_t.
Created stubs for functions to find local solar eclipses.
Renamed lunar eclipse 'center' to 'peak' to be consistent.
2020-05-23 21:29:16 -04:00
Don Cross
d0699e828e doxygen: enable more warnings, eliminate unnecessary output.
Tell doxygen to warn (and fail) for undocumented parameters.
Tell doxygen to generate XML only, not LaTeX, HTML, etc.
2020-05-23 13:58:23 -04:00
Don Cross
e3255c7401 Cleaned up and unified Earth and Moon radius constants.
In all 4 supported languages, use consistent constant names for
Earth and Moon radii.

Use Moon's equatorial radius for rise/set timing.

Use Moon's mean radius for calculating Moon's umbra radius for
detecting solar eclipses.

Also use Moon's mean radius for determining whether the Earth's shadow
touches the Moon, for finding lunar eclipses.

Use the Moon's polar radius for distinguishing between total
and annular eclipses, with a 14 meter bias (instead of 1420 meters!)
to match Espenak data.

Use consistent unit test error threshold of 0.57 minutes for rise/set.
Updated demo test data for slight changes to rise/set prediction times.

Updated doxygen options to issue an error on any warnings.
Fixed the incorrect function name link that doxygen was warning me about.
2020-05-23 13:08:25 -04:00
Don Cross
c148fa6869 C global solar eclipse: Determine whether observer sees total or annular.
Refactored the shadow calculator so that the abstract logic is centralized
in a new function CalcShadow. Use that function to calculate the umbra
radius at the peak observation site. Theoretically, any positive value
indicates a total eclipse, but I had to fudge a little to get my calculations
to match the test data.
2020-05-22 20:54:14 -04:00
Don Cross
d9e5f9dc57 C global solar eclipse: added documentation for functions.
Documented C versions of SearchGlobalSolarEclipse and NextGlobalSolarEclipse.
Removed ECLIPSE_HYBRID enumeration value. Not going to use it.
Reworded structure documentation to indicate that the eclipse
kind refers to the peak observer only.
2020-05-21 22:13:47 -04:00
Don Cross
dd02364fb4 C global solar eclipse: calculate longitude of the peak eclipse.
Use sidereal time to calculate the longitude of the point
on the Earth's surface where the Moon's shadow ray strikes it.
In the unit test, ignore glancing blows, but if the shadow
ray passes within 6100 km of the Earth's center, verify that
the total angular error is within about a quarter degree.
2020-05-21 20:59:22 -04:00
Don Cross
12aec84513 C global solar eclipse: calculating geographic latitude.
When there is a total or annular eclipse at the peak time and location,
I am calculating the geographic latitude of that peak within
1.006 degrees. I am disappointed by how sloppy that is, so I
will have to double-check all the math, especially related
to correcting for the Earth's oblateness.
2020-05-20 22:31:08 -04:00
Don Cross
741e38a3ef Increased efficiency of global solar eclipse predictor.
Search for peak shadow within 0.03 days of new moon.
2020-05-20 19:19:43 -04:00
Don Cross
487fe9743d Doubled performance of global solar eclipse predictor.
Ignore new moons whose ecliptic latitude is beyond 1.8 degrees.
This cuts the number of CalcMoon() calls in half.
2020-05-20 18:59:36 -04:00
Don Cross
7e345915b2 Simplified the inequalities that detect type of lunar eclipses.
There is no need to use absolute value, and it makes the logic
easier for me to understand if I express each of the inequalities
in terms of addition rather than subtraction.
2020-05-20 17:24:43 -04:00
Don Cross
8d3c43d794 Making progress on the C version of the solar eclipse predictor. 2020-05-19 22:33:33 -04:00
Don Cross
9ced9b4052 Starting to work on C version of global solar eclipse prediction. 2020-05-19 17:49:33 -04:00
Don Cross
7a182d1d8d Bumped node package version to 1.0.7. 2020-05-17 14:32:27 -04:00
Don Cross
30c2141ca6 Added documentation about lunar eclipse functions to topic indexes. 2020-05-16 20:41:57 -04:00
Don Cross
fe18eb81e4 Implemented Python version of lunar eclipse predictor. 2020-05-16 17:38:00 -04:00
Don Cross
b970694aa2 Implemented JavaScript version of lunar eclipse functions. 2020-05-16 15:43:16 -04:00
Don Cross
a753fb54b7 C# LunarEclipse: Applied optmizations from the C version of LunarEclipse. 2020-05-16 13:58:49 -04:00