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
- Рисуется произвольная фигура
- Над ней описывается прямоугольник
- Берётся фигура шаблон (шаблон это определяемая фигура)
- Его грани подразделяются
- Вписывается в прямоугольник фигуры
- поворачивается
- Перемещается в центр
- масштабируется
- На каждом повороте шаблона проверяется
- входят ли координаты точек фигуры в координаты точек шаблона
Вращаясь в области прямоугольника фигуры, подходящий шаблон в определённой позиции вращения становится “похож” на фиругу и часто пересекается с ней
Это работает, но есть как ложные срабатывания, при маленьком размере начальной фигуры (можно обойти увеличивая масштаб произвольной фигуры, но уже лень), и нужно много шаблонов, так как пропорциональное вращение шаблона, может быть не пропорционально размеру произвольной фигуры, например короткий и длинный прямоугольник.
Но если нужно в данных в виде точек находить точные совпадения с учётом произвольного поворота, такой топорный метод может быть полезен, например если в игре игроку даётся возможность правильно собрать некую фигуру, но у игрока есть возможность строить её с произвольным поворотом. В таком случае вполне можно применять, реализовав игровую механику на основе этого, головоломки там например. При этом фигура может быть сложной.
Оставлю тут, как есть.