Desktop-застосунок для дослідження фазового портрета клиновидного більярда.
Детальна специфікація й початкове ТЗ винесені в SPEC.md.
Вимоги:
- Python 3.11+
- залежності з
requirements.txt
Встановлення:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtЗапуск:
python main.pyАбо з явним шляхом до конфігу:
python main.py --config config.yaml- задавати
alpha,beta,N_phase,N_geom - підтримувати ввід кутів як десятковим числом, так і виразами типу
pi/6,2*pi/5,pi/2 - pi/6 - будувати траєкторії кліком по фазовій панелі
- показувати відповідну геометричну траєкторію в клині
- програвати replay поступовим промальовуванням
- експортувати PNG
- зберігати/завантажувати сесію
- робити автосейв сесії
Фазові панелі:
- клік у допустимій області створює нову траєкторію
- ліва панель стартує з
wall 1 - права панель стартує з
wall 2
Панель (alpha, beta):
- клік по діаграмі змінює параметри
- поля праворуч синхронізовані з діаграмою
Права панель:
Applyзастосовує параметриEnterу полях параметрів працює так само, якApplyReplay Selected,Replay All,Pause,Resume,Step,Reset ReplayExport PNG,Save Session,Load Session
Основний конфіг лежить у config.yaml.
title: заголовок вікнаtheme: службове поле темиlog_level: рівень логування
alpha: кут першої стінки в радіанахbeta: кут другої стінки в радіанахn_phase_default: довжина орбіти у фазовому просторіn_geom_default: скільки перших відбиттів показувати в клиніeps: чисельний допуск
delay_ms: затримка між кадрами replayselected_only_by_default: службовий прапорець режиму replay
dpi: DPI для PNGdefault_mode:colorабоmonochromemonochrome_line_styles: резерв під стилі монохромного експорту
show_grid: службовий прапорець сіткиshow_labels: службовий прапорець підписівshow_directrix: службовий прапорець директрисиshow_reflection_points: показ точок відбиттяphase_point_radius: радіус точок на фазових панеляхgeometry_point_radius: радіус точок на геометричній панелі
width: ширина головного вікнаheight: висота головного вікнаx: позиція вікна по Xy: позиція вікна по Y
Ця секція автоматично оновлюється при закритті застосунку.
enabled: чи ввімкнений автосейвpath: шлях до файлу автосейву
Якщо шлях відносний, він рахується від директорії, де лежить config.yaml.
Список областей для панелі (alpha, beta). Зараз може бути порожнім.
Ручне збереження:
- кнопка
Save Session
Ручне завантаження:
- кнопка
Load Session
Автосейв:
- записується автоматично при зміні стану й при закритті вікна
- при старті застосунок намагається відновити сесію з
autosave.path
У сесії зберігаються:
alpha,betaN_phase,N_geom- список траєкторій
visiblecolor- вибрана траєкторія
Кнопка Export PNG створює набір файлів:
- весь layout
phase_wall_1phase_wall_2wedgeangle
Режим експорту береться з config.export.default_mode.