Кроссплатформенное мобильное приложение для решения базовых геодезических задач. Написано на Flutter с чистым разделением бизнес-логики (utils/geo_math.dart) и экранов. Поддерживает светлую и тёмную темы.
| Экран | Задача |
|---|---|
| ГМС → градусы | перевод угла из формата «градусы-минуты-секунды» в десятичные градусы |
| Градусы → ГМС | обратный перевод десятичных градусов в ГМС с корректной обработкой переполнения секунд/минут |
| Прямая геодезическая задача (ПГЗ) | по координатам точки A, расстоянию и дирекционному углу — координаты точки B |
| Обратная геодезическая задача (ОГЗ) | по двум точкам — расстояние, румб, дирекционный угол и четверть (СВ/ЮВ/ЮЗ/СЗ) |
Дополнительно: копирование результата в буфер обмена, переключатель тёмной темы, валидация ввода.
Все вычисления вынесены в статический класс GeoMath (lib/utils/geo_math.dart):
gmsToDeg, degToGms, directProblem, inverseProblem. Логика полностью отделена от UI и легко тестируется.
lib/
├── main.dart # точка входа, тема, навигация
├── utils/
│ └── geo_math.dart # вычислительное ядро (ГМС, ПГЗ, ОГЗ)
└── screens/
├── home_page.dart # главный экран с выбором инструмента
├── gms_page.dart # ГМС → градусы
├── deg_page.dart # градусы → ГМС
├── direct_page.dart # прямая геодезическая задача
└── round_page.dart # округление
git clone https://github.com/DenisDrobyshev/flutter_dev.git
cd flutter_dev
flutter pub get
flutter runFlutter · Dart · Material 3 · url_launcher