Commit Graph

2245 Commits

Author SHA1 Message Date
Don Cross
4d81c4324f Shrank minified JS code to 76338 bytes.
Represent DeltaT table entries as lists rather than objects.
This makes them more compact in the minified code.
2020-05-04 12:59:17 -04:00
Don Cross
e7e9d1bb78 Shrank minified JavaScript to 76978 bytes.
Represent constellation name/symbol pairs as lists rather than objects.
This makes the representation more compact.
2020-05-04 12:49:00 -04:00
Don Cross
762bf08f66 Shrank minified JS code more: from 80904 to 77329 bytes.
Store each constellation border as a list rather than an object.
This makes the encoding more compact.
2020-05-04 12:39:32 -04:00
Don Cross
9a6005bf24 Shrank minified JavaScript from 86423 bytes to 80904 bytes.
Changed the units of the angles stored in the constellation
borders data so that the numbers can be represented more compactly.
This requires converting the numbers back at runtime, but this is
well worth the smaller size.
2020-05-04 12:27:37 -04:00
Don Cross
c955a56210 Added constellation finder function to JavaScript code. 2020-05-04 10:09:46 -04:00
Don Cross
2cb06afa63 Added JavaScript code generator for constellation data tables. 2020-05-03 22:06:18 -04:00
Don Cross
540d9d7cef Added constellation function to Python code. 2020-05-03 21:37:28 -04:00
Don Cross
d05f213584 Added constellation finder algorithm to C#. 2020-05-03 15:06:02 -04:00
Don Cross
4f8977067b Snapped constellation border to nearest quarter arcminute.
Instead of using decimal hours/degrees rounded to 4 decimal places,
I went back to the original constel.c and modified it to represent
both RA and DEC in degrees, and to round all values to the nearest
quarter arcminute. This seems closer to the original intent of the
constellation boundaries.
2020-05-02 21:21:32 -04:00
Don Cross
8367638d28 Updated codegen to generate C# constellation tables.
This is just a step toward supporting constellation
calculations in C#. Nothing uses the new tables yet.
2020-05-02 19:24:01 -04:00
Don Cross
48707310c0 Mention constellation functionality in README.md. 2020-05-02 17:25:08 -04:00
Don Cross
7fe9863b88 Renamed C function Astronomy_FindConstellation to Astronomy_Constellation. 2020-05-02 17:21:58 -04:00
Don Cross
e705306126 Remove star magnitudes from constellation test data. 2020-05-02 17:06:21 -04:00
Don Cross
c28722120e I decided to skip just the 25 constellation disagreements with HYG Database. 2020-05-02 17:01:21 -04:00
Don Cross
e803a65b4e More thorough constellation unit test for C code.
I'm using the HYG star database v3 from:
https://github.com/astronexus/HYG-Database

I compare the star constellations it reports against
what I calculate from the star RA/DEC it lists.
When I try this against all stars in the database, I
find 25 disagreements about which constellation contains
the star. Another person found 3 disagreements. See:

https://github.com/astronexus/HYG-Database/issues/21

For now, I'm testing only the stars brighter than mag 4.890,
which eliminates all the disagreements, and still gets me
over 1000 test cases.

Also, now I'm verifying ephemeris file and star database
checksums whether or not they have just been downloaded.
The idea is to catch corruption or unexpected changes
each time I run the unit test.
2020-05-02 15:10:10 -04:00
Don Cross
1e1af922fe Constellations: Added C unit test. Fixed bugs in C code.
This unit test only exercises 8 different points.
I want to add a more thorough unit test soon, before
moving on to implementing the constellation finder in
the other supported programming languages.
2020-05-02 13:33:25 -04:00
Don Cross
d0f328fe78 Starting work on C version of constellation lookup.
Generate C code for constellation tables.
First pass of Astronomy_FindConstellation(). Not yet tested.
2020-05-02 11:45:32 -04:00
Don Cross
d784aa5e36 Constellations: adding raw data. 2020-05-01 22:40:54 -04:00
Don Cross
9d9462f30d Fixed #41 - Consistently call the project "Astronomy Engine". 2020-04-30 15:16:08 -04:00
Don Cross
3bb740fd1c Fixed #62 - Automatically update copyright year range. 2020-04-30 15:12:14 -04:00
Don Cross
051f2e52a1 Fixed #61: Clarify that 1700..2200 year range applies to Pluto only. 2020-04-30 14:24:47 -04:00
Don Cross
e80b5a45d0 Updated npm package version to 1.0.5: supports EMB, SSB.
Astronomy Engine now supports calculating heliocentric
Solar System Barycenter (SSB) and
Earth/Moon Barycenter (EMB).
2020-04-29 22:11:11 -04:00
Don Cross
f754a6de82 Fixed #58 - Solar System Barycenter, Earth/Moon Barycenter.
Can now calculate the heliocentric Solar System Barycenter (SSB)
and Earth/Moon Barycenter (EMB).

Changes made in C, C#, JavaScript and Python:
Added new body codes SSB, EMB.
Added support for calculating both in HelioVector functions.
Verified that all calculations match NOVAS.
Verified that all calculations match each other across languages.
2020-04-29 21:53:57 -04:00
Don Cross
d3c29e7fd6 Added magnified view of Sun around SSB in barycenter.html animation. 2020-01-21 14:11:52 -05:00
Don Cross
a61dda0370 Starting to work on a demo of plotting the Solar System Barycenter.
Animate the Sun's motion around the Solar System Barycenter (SSB),
along with the four major planets Jupiter, Saturn, Uranus, and Neptune.
2020-01-21 13:25:32 -05:00
Don Cross
20f94c9622 Published npm package 1.0.4 2020-01-07 16:28:19 -05:00
Don Cross
2a1a25cd29 Fixed problems with building/testing on Windows. 2020-01-07 16:00:17 -05:00
Don Cross
6d871c023a More JavaScript documentation fixes. 2020-01-07 15:34:15 -05:00
Don Cross
762ae30a14 Fixes to JavaScript documentation. 2020-01-07 14:59:42 -05:00
Don Cross
60db741717 Ported planetary apsis search functions to JavaScript. 2020-01-07 14:09:45 -05:00
Don Cross
ec6a82b133 Improved performance of Neptune apsis search.
The apsis search for Neptune was sampling 1000 points
in its first pass. It turns out 100 is enough.
2020-01-07 11:57:54 -05:00
Don Cross
7afdd4b7e1 Tweaked main readme file. 2020-01-06 20:53:32 -05:00
Don Cross
7892b797ba Python: planet apsis search is working. 2020-01-06 20:49:49 -05:00
Don Cross
cdf9c6955e Added planet apsis functions to C and C# documentation topic indexes. 2020-01-06 17:28:09 -05:00
Don Cross
977ab2d5b3 C# planet apsis: Implemented unit tests. 2020-01-06 16:04:57 -05:00
Don Cross
9992f2570b Starting to port planetary apsis functions to C#.
No unit tests implemented yet.
2020-01-06 15:19:19 -05:00
Don Cross
ff482335db C planet apsis: made SearchPlanetApsis, NextPlanetApsis parameters consistent.
Existing functions have body parameter before time parameter.
Made the planet apsis search functions consistent with that pattern.
2020-01-06 14:16:17 -05:00
Don Cross
6304cc861a C planet apsis: removed unnecessary clamping of apsis search interval to 10 days. 2020-01-06 13:57:00 -05:00
Don Cross
4023974079 More adjustments to unit tests to pass for model adjustments. 2020-01-06 12:53:05 -05:00
Don Cross
a5dbfd22c4 Adjusted JS unit test thresholds to pass for updated planet models.
Because I had to tweak models to get better planet apsis predictions,
it caused slight changes in other calculations that tripped
unit test errors. These are all still within safe values, so
I relaxed the ones that failed.
2020-01-06 12:06:30 -05:00
Don Cross
02dc4e95a4 Pluto apsis predictions are now within 0.0810 degrees of orbit period.
Increased from 7 Chebyshev sections to 8.
This also decreases max arcmin error from 0.336084 to 0.120252.
2020-01-06 11:25:47 -05:00
Don Cross
f67ddf1c8d Planet apsis: all planets but Pluto now have prediction error below 0.1 degrees.
Adjust VSOP models for planets to bring their prediction errors beneath
0.1 degrees of a total orbit.
ctest no longer runs tests when no command line arguments are given.
That was annoying because I kept running it by accident.
2020-01-06 10:59:38 -05:00
Don Cross
819e59745d Decreased Neptune apsis prediction errors from 49.25 days to 15.45 days.
Include an extra 4 terms in the radial component of the VSOP
model for Neptune. The code automatically picks the 4 terms
that maximize the time derivative's highest possible contribution.
2020-01-05 20:44:29 -05:00
Don Cross
59237cc021 Split VsopTruncate into VsopTruncate/VsopTrim.
The VsopTruncate function had logic to remove any trailing
empty series from a coordinate formula. Now I have split
this out into a separate function called VsopTrim.
I did this because I want to experiment with re-extending
VSOP models to improve prediction of planet apsides,
so some series that are empty might become non-empty again
before being saved to disk.
2020-01-05 12:38:08 -05:00
Don Cross
5df1af7428 Deleted trailing whitespace in vsop.c 2020-01-05 11:47:46 -05:00
Don Cross
4b38e8ccf6 Fixed typo in comment. 2020-01-04 22:33:31 -05:00
Don Cross
fd77b6b6f6 C: Planet apsis test measures apsis error in terms of orbital angles.
Calculate an orbital angle error as a ratio of day error
divided by orbital period in days, multiplied by 360 degrees.
This is a way to normalize errors for distant planets.
2020-01-04 22:31:31 -05:00
Don Cross
331bdfcea9 Added special-case logic for finding Neptune perihelion/aphelion.
Because of Sun/SSB wobble, can't use slope solver to find
Neptune apsides. Added special case logic to find them
using more of a brute force algorithm.
Unit tests now pass, but require very loose tolerances
for the outer planets.
I will have to adjust the model generator to create
more accurate heliocentric distance models for the VSOP
planets, and more accurate Chebyshev polynomials for Pluto.
This will be a judgment call to balance accuracy versus code size.
2020-01-04 11:01:28 -05:00
Don Cross
1436a0be25 Planet apsides - work in progress - BROKEN TESTS.
Use planet apsis test data generated by generate.c to verify
Astronomy Engine calculations. Currently this fails for Neptune
as expected. Will fix that in a future commit.

Implemented a more efficient function Astronomy_HelioDistance
for calculating heliocentric distances of the planets
Mercury through Neptune: use VSOP distance formula only.
For Moon and Pluto, fall back to calculating heliocentric
vector and then finding the length of that vector.
2020-01-04 09:37:56 -05:00
Don Cross
07201afe0a Generate planet perihelion/aphelion test data from NOVAS.
Created my own unit test data from NOVAS for planet apsides.
Handle oddities with Neptune's orbit as a special case.
Removed hacks in ctest.c.
2020-01-04 07:05:43 -05:00