Несколько точек на 2D плоскости. Они представляют собой оконную раму преимущественно прямоугольной формы с некоторыми возможными вариациями. Точки, являющиеся частью каждой стороны, не обязательно образуют идеальную линию. Каждая сторона окна должна быть измерена.
Вращающееся электронное устройство, прикрепленное к окну, измеряет расстояние во всех направлениях, обеспечивая измерения на 360 градусов. Используя угол поворота и расстояние, набор точек наносится на 2D-систему координат. Пока все хорошо.
Теперь самое сложное. Измеренная оконная рама может иметь некоторые вариации. Точки должны быть преобразованы в прямые линии, и длина каждой линии должна быть измерена.
Я предполагаю, что необходимы следующие шаги:
- Сгруппируйте разные точки в прямые линии. Это означает аппроксимацию каждой линии «между» образующими ее точками.
- Рисование этих линий, избавление от отдельных точек, используемых для построения линий.
- Найдите точки, где пересекаются каждые две линии.
- Измерьте расстояние между этими точками. Однако не все расстояния между всеми точками интересны. Например, диагонали в кадре не имеют значения.
Допустимы любые библиотеки Java, работающие с геометрией, которые могут решить эту проблему. Я напишу решение на Kotlin / Java, но приветствуются любые алгоритмические идеи, примеры кода и идеи на любых других языках или псевдокоде.
Заранее спасибо!
Новое изображение