Приложение разработано в качестве лабораторной работы по курсу "Языки сценариев" ИМКН УрФУ, 2016-2017 (ФИИТ, 2 курс)
Антон Толстов, aka Anaym, education@atolstov.com
- Python 3.5.2
- PyQt 5 (pip install pyqt5) - библиотека GUI
- JDCal (pip install jdcal) - библиотека работы с юлианским календарём
Для ввода значений в меню (координаты, время, ускорение, ...):
- Поставьте курсор в соответствующее поле
- Перейдите в режим редактирования нажав Enter. Поле должно стать серым
- Введите новое значение
- Для подтверждения нажмите Enter еще раз. Поле станет белым, и если значение корректно - оно изменится
- geometry - модуль с необходимыми геометрическими примитивами, для описания небесной сферы
- nvector.py - описывает произвольный immutable n-мерный вектор
- equatorial.py - описывает вектор в экваториальной системе координат, а так же его преобр-е в горизонтальную
- horizontal.py - описывает вектор в горизонтальной системе координат, а так же его преобр-е в декартовую
- vector.py - описывает вектор в декартовой системе координат
- angle_helpers.py - описывает вспомогательные функции и декораторы для работы с углами
- sky_math.py - описывает математику необходимую для небесной сферы
- graphics - модуль для работы с графикой
- autogui - модуль-обертка над pyqt5 для более удобного преобразования полей классов в виджеты
- renderer - модуль описывающий рендеринг небесной сферы
- camera.py - описывает камеру (угол взгляда)
- watcher.py - описывает наблюдателя (координаты, время)
- settings.py - настройки рендеринга
- projector.py - проецирование небесной сферы на плоскость на основе настроек наблюдателя
- renderer.py - рендеринг небесной сферы на плоскость на основе настроек наблюдателя
- sky_viewers - модуль описывающий оконный вариант программы
- stars - модуль работы со звездами и небесной сферой
- stars - база данных со звёздами северного полушария
- star.py - описывает звезду/небесное тело
- skydatebase.py - база данных звезд, с фильтром по созвездиям
- parser.py - парсер текстовой базы звезд
- star_time.py - описывает звездное время
- tests - модуль с unit-тестами
- program.py - основной файл для запуска
- requrements.py - модуль работы с зависимостями
- sound.py - небольшой аудиоплеер
- task.py - парсер входных аргументов
- _utility.py - общие вспомогательные функции
python program.py
python program.py -c
python program.py -c -d "29.11.16 9:31"
python program.py -c -d "30.11.16 18:20:41" --constellations Andromeda Camelopardalis
python sound.py "resources\Still Alive.mp3"
WASDQE - вращение камеры
F - переключение полноэкранного режима
M - переключение видимости меню
N - переключение видимости фильтра
I - сохранение текущего изображения
R - перерендерить
Space - переключение паузы
Esc - выход
Мышь с зажатой левой клавишей - вращение камеры (лево-право - вращение в горизонтальной плоскости, вверх-вниз - в вертикальной)
Двойной клик по названию созвездия - ориентация на созвездие
Двойной клик по звезде - ориентация на звезду
Наведение курсора на звезду - Созвездие, Имя звезды, Спектральный класс, Магнитуда в виде всплывающей подсказки
Синяя [линия] окружность - [направление на] северный полюс
Оранжевая [линия] окружность - [направление на] южный полюс
Зеленая [линия] окружность - [направление на] взгляд под углом 90` вверх
Голубая окружность - вектор взгляда
Фиолетовая окружность - вектор наблюдателя
- Преобразование координат для отрисовки
- Входные данные: Координаты звезд в экваториальной системе координат
- Поворачиваем небесную сферу с учетом текущего времени и координат: Экваториальные координаты
- Преобразуем в декартову систему координат: Декартовы координаты
- Применяем проецирование для отрисовки на экране: Спроецированные координаты
- Применяем искажение рыбьего глаза для улучшения наглядности: Экранные координаты
- Построение визуализации
- Изображение рендериться в классе Renderer
- Sky - автоперерисовывающаяся со временем небесная сфера
- ControllableSky : Sky - визуализация с меню управления
- FilterableSky : ControllableSky - фильтрация по магнитуде/созвездию
- KeyControllableSky : FilterableSky - визуализауия с управлением с клавиатуры
- MouseControllableSky : KeyControllableSky - визуализация, поддерживающая управление мышью
- NamedSky : MouseControllableSky - подсказки о звездах