.gitattributes
.gitignore
.pre-commit-config.yaml
.readthedocs.yaml
LICENSE
MANIFEST.in
README.md
_config.yml
mkdocs.yml
pyproject.toml
requirements.txt
uv.lock
.github/workflows/publish-to-pypi.yml
.idea/.gitignore
docs/changelog.md
docs/index.md
docs/img/analemma_favicon.svg
docs/img/analemma_logo_dark_mode_red.svg
docs/javascripts/katex.js
docs/nb/analemma.ipynb
docs/nb/equation_of_time.ipynb
docs/nb/hour_angle.ipynb
docs/nb/orbit_analysis.ipynb
docs/nb/rohr_comparison.ipynb
docs/nb/shadow_angle.ipynb
docs/nb/shadow_length.ipynb
docs/nb/sundial_plots.ipynb
docs/nb/sundial_setup.ipynb
docs/nb/sunrise_and_sunset.ipynb
docs/paper/.gitignore
docs/paper/RGoyderSundial.pdf
docs/paper/RGoyderSundial.tex
docs/paper/The sundial problem from a new angle - Russell Goyder.pdf
docs/paper/figs/ArbitraryDial.eps
docs/paper/figs/ArbitraryDial.png
docs/paper/figs/ArbitraryDial.svg
docs/paper/figs/ArcticDial.eps
docs/paper/figs/ArcticDial.png
docs/paper/figs/ArcticDial.svg
docs/paper/figs/DialFrame.eps
docs/paper/figs/DialFrame.fig
docs/paper/figs/DialFrame.png
docs/paper/figs/DialFrame.svg
docs/paper/figs/EquationOfTime.eps
docs/paper/figs/EquationOfTime.png
docs/paper/figs/EquationOfTime.svg
docs/paper/figs/Gnomon.eps
docs/paper/figs/Gnomon.fig
docs/paper/figs/Gnomon.png
docs/paper/figs/Gnomon.svg
docs/paper/figs/HorizontalDialZoom1.eps
docs/paper/figs/HorizontalDialZoom1.png
docs/paper/figs/HorizontalDialZoom1.svg
docs/paper/figs/MainArena.eps
docs/paper/figs/MainArena.pdf
docs/paper/figs/MainArena.png
docs/paper/figs/MainArena.ppt
docs/paper/figs/MainArena.svg
docs/paper/figs/ShadowTriangle.eps
docs/paper/figs/ShadowTriangle.fig
docs/paper/figs/ShadowTriangle.png
docs/paper/figs/ShadowTriangle.svg
docs/paper/figs/SurfaceFrame.eps
docs/paper/figs/SurfaceFrame.fig
docs/paper/figs/SurfaceFrame.png
docs/paper/figs/SurfaceFrame.svg
docs/paper/figs/eps2png.sh
docs/paper/figs/eps2svg.sh
docs/paper/figs/figure1.eps
docs/paper/figs/figure2.eps
docs/paper/figs/figure3.eps
docs/paper/figs/figure4.eps
docs/paper/figs/figure5.eps
docs/paper/figs/figure6.eps
docs/paper/figs/figure7.eps
docs/paper/figs/figure8.eps
docs/paper/figs/figure9.eps
docs/paper/figs/rename_figs.sh
docs/ref/frame_ref.md
docs/ref/geometry_ref.md
docs/ref/orbit_ref.md
docs/ref/plot_ref.md
docs/ref/render_ref.md
docs/ref/result_ref.md
docs/ref/test_geometry_ref.md
docs/ref/test_plot_ref.md
docs/ref/test_results_ref.md
docs/ref/util_ref.md
res/analemma_favicon.svg
res/analemma_logo_dark_mode_red.svg
res/analemma_logo_light_mode_red.svg
res/logo.ipynb
src/analemma/__init__.py
src/analemma/geometry.py
src/analemma/orbit.py
src/analemma/plot.py
src/analemma.egg-info/PKG-INFO
src/analemma.egg-info/SOURCES.txt
src/analemma.egg-info/dependency_links.txt
src/analemma.egg-info/requires.txt
src/analemma.egg-info/top_level.txt
src/analemma/algebra/__init__.py
src/analemma/algebra/frame.py
src/analemma/algebra/render.py
src/analemma/algebra/result.py
src/analemma/algebra/util.py
src/analemma/tests/__init__.py
src/analemma/tests/conftest.py
src/analemma/tests/test_geometry.py
src/analemma/tests/test_orbit.py
src/analemma/tests/test_plot.py
src/analemma/tests/test_results.py