From 1f3b7b4b0f22fd6143831a1166d4fe29174763df Mon Sep 17 00:00:00 2001 From: Erin Moon Date: Tue, 26 May 2020 19:23:32 -0500 Subject: [PATCH] start adding spacebook --- README.md | 1 + aaaa/spacebook/README.md | 16 ++++++ aaaa/spacebook/magnitude-distribution.png | Bin 0 -> 20956 bytes aaaa/spacebook/spacebook.py | 62 ++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 aaaa/spacebook/README.md create mode 100644 aaaa/spacebook/magnitude-distribution.png create mode 100644 aaaa/spacebook/spacebook.py diff --git a/README.md b/README.md index 572f303..0204ca9 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ - [aaaa/digital-filters-meh](aaaa/digital-filters-meh) - [aaaa/like-to-watch](aaaa/like-to-watch) - [aaaa/seeing-stars](aaaa/seeing-stars) +- [aaaa/spacebook](aaaa/spacebook) - [comms/56k](comms/56k) - [ground-segment/phasors-to-stun](ground-segment/phasors-to-stun) - [payload/leakycrypto](payload/leakycrypto) diff --git a/aaaa/spacebook/README.md b/aaaa/spacebook/README.md new file mode 100644 index 0000000..027216f --- /dev/null +++ b/aaaa/spacebook/README.md @@ -0,0 +1,16 @@ +# SpaceBook + +**Category**: Astronomy, Astrophysics, Astrometry, Astrodynamics, AAAA +**Points (final)**: 75 points +**Solves**: 56 + +> Hah, yeah we're going to do the hard part anyways! Glue all previous parts together by identifying these stars based on the provided catalog. Match the provided boresight refence vectors to the catalog refence vectors and tell us our attitude. +> +> Note: The catalog format is unit vector (X,Y,Z) in a celestial reference frame and the magnitude (relative brightness) + +**Given files**: spacebook-golf56788echo.tar.bz2 + +## Writeup +by [erin (`barzamin`)](https://imer.in). + +![Distribution of star magnitudes for catalog and unknown sets](magnitude-distribution.png) \ No newline at end of file diff --git a/aaaa/spacebook/magnitude-distribution.png b/aaaa/spacebook/magnitude-distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..71b4b04d67b414aaa5e67b1e3dce598b0b1f7492 GIT binary patch literal 20956 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 Rn}CUt_|V