Распознавание контуров представленных в виде множества/массива точек является не тривиальной задачей, на изучение и реализацию которой потребуется немало времени. Расскажу, как я пришел к такому выводу. Совсем недавно мне потребовалось распознать контур фигуры, описанный пользователем при помощи мыши. Начал рыть алгоритмы, все статьи и форумы которые я прочитал указывали, в худшем случае на «Нейронные сети», либо на «Фурье анализ».

Решение задачи с использованием методов нейронных сетей — мощная и прогрессивная штука, но такая же и бестолковая. Так специалисты программирования рассказали, что придется реализовать базу знаний, то есть обучить в итоге получившийся ИИ. Короче, бред.

А вот, методика Фурье смотрелась даже очень ни чего, плюсом к ней надо было реализовать корреляционный анализ. Это я прочел здесь. Вообщем, я ни стал делать ни того и ни другово. Я начал искать, совет ищите всегда в иностранной части сети, нашлось замечательное решение, позволяющее распознавать жесты мыши. Такого функционала мне хватало. Хватило именно потому, что создание контура фигуры можно упростить до жеста, то есть не замыкать контур, предлагая пользователю упрощенно описать контур/фигуру.

Демка. Зажмите левую клавишу мыши и опишите один из контуров на рисунке в правом углу. Жирная точка на рисунках — конечная точка.

Проект FlashDevelop.

MouseGesture

Движок Box2d