У меня есть приложение, где пользователь может перетаскивать свои изображения (.pngs) на виртуальную таблицу.
Изображения имеют форму - в основном правильные многоугольники, но некоторые кусочки мозаики, блоки тетриса и так далее.
Я хочу, чтобы формы при перетаскивании привязывались друг к другу, как две части головоломки (как в MS Word «Привязка к сетке»)
Как мне это сделать?
Ограничения:
Скорость:
Это будет происходить либо при перетаскивании изображения пользователем, либо в момент отбрасывания. Поэтому алгоритм должен быть быстрым (в реальном времени). Перетаскивается любое количество изображений, и может быть любое количество неподвижных изображений для привязки.
Нет дальнейшего ввода пользователя:
Пользователь не должен делать никаких действий, кроме открытия файла изображения и перетаскивания изображений.
Возможности:
Используйте какой-нибудь алгоритм вогнутой оболочки + упрощение, затем сопоставьте длину ребер.
Проблема в том, что края пользователя не могут быть такими четкими / четко определенными.
Используйте преобразование Лапласа на компоненте прозрачности изображения (для обнаружения краев), затем обработайте эти области как положительно и отрицательно заряженные, и используйте физическое моделирование, чтобы найти, как они соединяются. Ограничение: Скорость, тюнинг.
В настоящее время я просто предполагаю, что изображения являются одним из обычных тесселяций: прямоугольник, треугольник или шестиугольник и работают оттуда. Но я бы предпочел что-то, что работает с другими формами.