Figuvam - Фигуру Вам :)
Наивная демка-попытка опеределять нарисованные 2D фигуры, просто через их сравнение.
Зависимости
sudo apt install love
Запуск
love main.lua
Или
love figuvam.love
Или
chmod +x figuvam.AppImage
./figuvam.AppImage
По мотивам https://www.linux.org.ru/forum/development/17942895?cid=17943302
- Рисуется произвольная фигура
- Над ней описывается прямоугольник
- Берётся фигура шаблон (шаблон это определяемая фигура)
- Его грани подразделяются
- Вписывается в прямоугольник фигуры
- поворачивается
- Перемещается в центр
- масштабируется
- На каждом повороте шаблона проверяется
- входят ли координаты точек фигуры в координаты точек шаблона
Вращаясь в области прямоугольника фигуры, подходящий шаблон в определённой позиции вращения становится “похож” на фиругу и часто пересекается с ней
Это работает, но есть как ложные срабатывания, при маленьком размере начальной фигуры (можно обойти увеличивая масштаб произвольной фигуры, но уже лень), и нужно много шаблонов, так как пропорциональное вращение шаблона, может быть не пропорционально размеру произвольной фигуры, например короткий и длинный прямоугольник.
Но если нужно в данных в виде точек находить точные совпадения с учётом произвольного поворота, такой топорный метод может быть полезен, например если в игре игроку даётся возможность правильно собрать некую фигуру, но у игрока есть возможность строить её с произвольным поворотом. В таком случае вполне можно применять, реализовав игровую механику на основе этого, головоломки там например. При этом фигура может быть сложной.
Оставлю тут, как есть.
Описание
Демка на Love2D для сравнения фигур