Commit Graph

2227 Commits

Author SHA1 Message Date
Don Cross
a6b1963291 Decreased minified JS size from 98382 to 94490 bytes.
I increased the error tolerance slightly for the Jupiter moons model.
This shrank the model tables significantly, giving me some more
breathing room to stay under 100K download size.
2021-04-12 20:53:42 -04:00
Don Cross
7f26aa7c20 JS: Decreased minified browser code from 98413 to 98382 bytes.
I don't like how close I am to my 100K target size, now
that I'm calculating Jupiter's moons.
Simplified the spin() function so its minified code is smaller.
I will look for other things I can shrink too.
2021-04-12 19:27:45 -04:00
Don Cross
a0d88f2f00 JS: Added documentation for JupiterMoons function and return type. 2021-04-12 16:57:22 -04:00
Don Cross
d64a46d5e1 JS: Implemented calculation of Jupiter moons. 2021-04-12 16:19:33 -04:00
Don Cross
1c0c31de20 Removed the Stellarium data I used to verify initial Jupiter Moon implementation. 2021-04-11 20:01:39 -04:00
Don Cross
f879bc51a6 Skip Jupiter Moon model optimization if already calculated.
This will save a lot of time in my local unit tests, but
will verify it isn't broken when I push to GitHub.
2021-04-11 19:27:09 -04:00
Don Cross
5891cfdb5e Jupiter Moons: implemented optimizer that truncates series.
The optimizer makes the Jupiter moons series as short as
possible while keeping error within an acceptable limit.
This should help produce much smaller code, especially
for JavaScript where it really matters.
2021-04-11 17:27:03 -04:00
Don Cross
58c0fe342f Jupiter Moons: added debug prints to get a feel for series frequencies. 2021-04-11 14:45:45 -04:00
Don Cross
2a27673af4 Jupiter moons: keep the last known good generated model in git. 2021-04-11 13:45:24 -04:00
Don Cross
43d05b25bd Jupiter Moons: stubbed the idea of a model optimizer.
I want to experiment with truncating the L1.2 series to
sacrifice some accuracy for smaller generated code.
To that end, I implemented the ability to save the
Jupiter moons model after loading it. I added a 'jmopt'
command to the 'generate' program that will do this
optimization. For now, it just loads the model and
saves it back to a different file. Then the code generator
loads from the saved file instead of the original.
This commit verifies that everything is still working,
before I start truncating the series.
2021-04-11 13:42:23 -04:00
Don Cross
87f5dd1c95 Jupiter Moons: greatly increased JPL Horizons test data coverage.
I want to make sure I have thorough coverage of exercising
the Jupiter moon calculations before I start tinkering
with truncating the L1.2 models; the eventual goal is
to decrease the code size, especially later for JavaScript.
Only 101 test cases seemed far too small. Now there are 5001.

Increased the time range to cover the years 1931..2068.
Decreased the time step from 100 days to 10 days.
Eliminated all but the geometric data, because I'm testing
code without any light-time or aberration correction.

Updated the README.txt instructions for generating the
JPL Horizons test data.
2021-04-11 11:33:17 -04:00
Don Cross
260ef16781 C Jupiter Moons : cleaner generated code.
Output the Jupiter moon model data tables in a tidier format.
Format the amplitudes as fixed-point instead of exponential,
so that the JavaScript minifier will have an easier time
shrinking the data (later, when I get to the JavaScript version).
2021-04-11 10:30:32 -04:00
Don Cross
87cfae4ba0 C Jupiter Moons: added unit test to compare against JPL Horizons data. 2021-04-10 19:58:58 -04:00
Don Cross
9519407212 Made Stellarium comparison tolerances much stricter. 2021-04-10 16:34:20 -04:00
Don Cross
dcbd6fe243 Jupiter moons calculations are now consistent with Stellarium.
I translated the L1.2 FORTRAN code into C, and verified
that the calculations match the Stellarium code I modified
to produce EQJ coordinates. I still need to compare against
JPL Horizons data.
2021-04-10 16:29:10 -04:00
Don Cross
70a9fa5e27 Stubbed the unit test for Jupiter moon calculations.
This is the beginning of a unit test for the new C function
Astronomy_JupiterMoons(). It reads the stellarium file and
can iteratively solve for the ut corresponding to a given tt.
The test "passes" because it doesn't actually check the value
returned by Astronomy_JupiterMoons() yet.
2021-04-09 20:40:23 -04:00
Don Cross
69eb06e6a8 Jupiter Moons: updated data and reference code to generate EQJ.
Instead of calculating ECL coordinates that I will later
have to convert to EQJ, I re-ran all the JPL Horizons test
data sets for EQJ, and updated the rotation matrix in the
Stellarium sample code to generate EQJ output. I'm still
getting reasonably good fit between the two: the max
error is about 1 part in 5000. I was hoping for better,
so I still wonder if I'm just a tiny bit off in some respect.
2021-04-08 21:02:36 -04:00
Don Cross
38a14301e6 Compare Stellarium data with JPL Horizons data for Jupiter's moons.
Stellarium uses the same L1.2 model for Jupiter's moons that
I am implementing. I wanted to confirm that I have valid test
data that matches something authoritative.
2021-04-07 21:00:04 -04:00
Don Cross
5b1671f994 Added JPL Horizons test data for Jupiter's moons state vectors.
The file README.txt contains my instructions for how to reproduce
all of this data using the JPL Horizons online tool.
2021-04-07 17:27:51 -04:00
Don Cross
881664a5f0 C: Stubbed function for calculating Jupiter's moons.
Work in progress.
Generating the data tables for Jupiter's moons, but not using them yet.
Created a stub function Astronomy_JupiterMoons(), but it just
returns invalid vectors. The formulas have not yet been implemented.
2021-04-06 16:42:29 -04:00
Don Cross
c2ccfd33c6 Starting to implement the code generator for Jupiter's moon models.
This is work in progress. Not yet finished.
The code currently just loads the raw data models.
2021-04-06 14:27:47 -04:00
Don Cross
294cf5d14f Merge branch 'master' of https://github.com/cosinekitty/astronomy 2021-04-06 12:57:04 -04:00
Don Cross
df9d962400 Added python demo for calculating lunar days. 2021-04-06 12:56:36 -04:00
Don Cross
e8f4d1091a Script to validate the L1.2 model FORTRAN code for Jupiter's moons. 2021-04-05 15:04:52 -04:00
Don Cross
efc2f0d8cf Capturing some FORTRAN code for Jupiter's moons from ftp.imcce.fr.
I found some FORTRAN code for calculating the positions of Jupiter's
moons. I recorded its origin in README.md. I'm going to experiment
with using it as a basis for doing these calculations in Astronomy Engine.
2021-04-05 14:50:49 -04:00
Don Cross
6b0a966fe7 Tweaks to generating documentation for constants.
Python, C#: sort constants by name.
C#: use horizontal line separators between constants.
C: put a link to the [constants] section.
2021-04-04 21:40:45 -04:00
Don Cross
9b67e7f3f9 Starting development for calculating Jupiter's moons.
I am starting the process of implementing calculation
of Jupiter's four largest moons: Io, Europa, Ganymede, Callisto.
This commit just contains constant declarations for the
equatorial, polar, and volumetric mean radii of Jupiter.

The positions of the moons will be related to the center
of Jupiter and be expressed in Jupiter equatorial radius units,
so I felt it would be good to give users a way to convert to
kilometers, which can in turn be converted to AU.
2021-04-04 20:52:31 -04:00
Don Cross
19aa193dc1 Fixed #95 - automate reporting of minified JavaScript size in documentation
Automatically update the front page README.md to include the current
byte size of astronomy.browser.min.js. Fail the build process if
this file ever grows to 100000 bytes or larger.
2021-04-04 19:49:38 -04:00
Don Cross
6f943d9ea4 Fixed some minor documentation mistakes. JS: Export DEG2RAD, RAD2DEG. npm_2.0.3 2021-04-01 14:08:56 -04:00
Don Cross
bbd16d299a Minor cleanup in Python documentation. 2021-04-01 10:43:37 -04:00
Don Cross
4cc2a14a38 Python docs: provide mechanism for documenting constants.
Python docstrings don't work for variables, so I hacked
a special comment format for helping pydown generate Markdown
text for the README.md for the exported constant KM_PER_AU,
or any other constants I may want to expose in the future.
2021-04-01 09:39:51 -04:00
Don Cross
786afdd4eb Fixed broken link to KM_PER_AU in JavaScript documentation. 2021-03-31 22:42:50 -04:00
Don Cross
c3c8ffeb0f Finished documenting ObserverVector() in topic indexes. 2021-03-31 21:49:35 -04:00
Don Cross
4e868732c5 PY: Implemented ObserverVector function and unit test. 2021-03-31 21:10:24 -04:00
Don Cross
cfb8714da4 JS: Added unit test and documentation for ObserverVector.
Also made time parameters to rotation matrix functions be of
type FlexibleDateTime, and internally convert them to AstroTime.
This should be the policy of all exposed functions in the
JavaScript version of Astronomy Engine.

Exposed KM_PER_AU to outside callers.
2021-03-31 19:07:00 -04:00
Don Cross
5389513382 C#: Added unit test for ObserverVector() function. 2021-03-31 16:41:31 -04:00
Don Cross
085d285ef0 Refactored all the nutation and precession functions.
Use a private enumerated type to select which direction
the precession and nutation is to be done:
- from date to J2000
- from J2000 to date

Normalize the order of parameters to be consistent
between precession() and nutation(), and across languages.
Pass in AstroTime instead of a pair of floating point TT
values (one of which had to be 0).

Added TypeScript version of ObserverVector(),
but it has not yet been documented or tested.
2021-03-31 12:09:11 -04:00
Don Cross
0d4c8e30c0 Added ObserverVector() to C and C# documentation topic indexes. 2021-03-30 19:11:32 -04:00
Don Cross
dfa88f23b8 C#: Added more use of operator overloads for AstroVector. 2021-03-30 17:21:02 -04:00
Don Cross
faf752640c C#: Use DEG2RAD and RAD2DEG constants in external code.
Instead of copy-n-paste of this constants, use them
from Astronomy Engine, now that they are public and documented.
2021-03-29 22:25:07 -04:00
Don Cross
668c212c5e Simplified C# precession function.
It always seemed a little odd to have to pass in two
time values to the precession() function, when one of
them always had to be 0. I think the logic is clearer
now that I pass in an enum value to select whether I
want a forward transform or a backward transform.
It is cleaner that now I can just pass in an AstroTime.
2021-03-29 21:26:32 -04:00
Don Cross
d5304651f2 C#: ObserverVector, vector operators, constant docs in Markdown.
Ported the ObserverVector function to C#, but it is not tested yet.

While doing that, I realized I needed a way to document newly public
constants DEG2RAD, RAD2DEG, and KM_PER_AU. This led to work
on the 'csdown' project that converts C# XML documentation
into Markdown format.

Then I realized a lot of code would be more elegant if
AstroVector had operator overloads for addition, subtraction,
and dot products.

This in turn required these operators to know which time value
to store in the AstroVector, which led to realizing that I
was sloppy in a lot of places and passed in null times.

So this whole commit contains a variety of unrelated topics,
which is something I don't usually do, but it felt
justified here while I'm in a refactoring mood.
2021-03-29 20:36:55 -04:00
Don Cross
6a39b1913c Follow up fix for generating markdown for C pointer types. 2021-03-29 16:41:25 -04:00
Don Cross
dbebde2dc7 Fixed #93 - Incorrect markdown for C type links.
The C functions that took a parameter of a pointer type
'astro_time_t *' were causing incorrect Markdown to be generated.
Now my custom Markdown translator (hydrogen.js) handles this case.
2021-03-29 16:32:08 -04:00
Don Cross
463a99e4a0 C: Improved unit testing of Astronomy_ObserverVector().
Now exercise the new Astronomy_ObserverVector() function by
calling it with a variety of times, geographic coordinates,
and both supported equatorial systems (J2000, of-date).

Also check to make sure it returns the correct error code
when passed an invalid astro_equator_date_t value.
2021-03-29 12:18:30 -04:00
Don Cross
61da2253be Implemented C version of ObserverVector function.
This function calculates the position of an observer on or
near the surface of the Earth (the geoid) in one of two
equatorial coordinate systems: J2000 or equator-of-date.
2021-03-29 08:33:17 -04:00
Don Cross
743c11b7fc Miscellaneous work on C code and documentation.
Moved the following constant definitions from astronomy.c
to astronomy.h, so external code can use them:

DEG2RAD
RAD2DEG
KM_PER_AU

My custom doxygen-to-markdown translator (hydrogen.js)
now emits markdown for the above constants.

Eliminated the obsolete constants MIN_YEAR and MAX_YEAR.
Astronomy Engine is no longer limited to calculating planets
within that range of years.

Fixed a couple of minor documentation issues in the C code.

Started work on a new function Astronomy_ObserverVector,
but it is just a stub for now.
2021-03-28 20:53:29 -04:00
Don Cross
6c709318fc Fixed typos in the main README. 2021-03-28 11:40:40 -04:00
Don Cross
35cc361492 Fixed #50 - documented the reason for creating Astronomy Engine in the README. 2021-03-28 11:27:28 -04:00
Don Cross
090c717978 Forgot to update documentation.json before pushing. npm_2.0.2 2021-03-27 21:48:14 -04:00