alienworkshop
@alienworkshop

Как сравнить произвольные фигуры?

Выполняю задание, которое состоит в следующем:
есть эталонный круг определённого радиуса;
3 пользователя рисуют круг от руки, а программа должна определить, какой круг больше соответствует эталонному.

У каждого выйдет кругообразная произвольная фигура.
Как эти фигуры сравнить алгоритмически или математически?
  • Вопрос задан
  • 356 просмотров
Пригласить эксперта
Ответы на вопрос 4
evgenyspace
@evgenyspace
Исследователь
Вычислить среднее значение радиуса от 0 до 2 PI, среднеквадратичные отклонения от этого среднего. Можно еще и частоту отклонений включить в анализ, т. е. сколько раз нарисованный круг пересечет эталонный, средний (чем меньше, тем лучше).
Ответ написан
@lolhunter
Самый простой вариант - вырезать круг из фигуры совместив центры и посчитать площадь по модулю. Где площадь меньше там фигура и более "похожа".
Центр у фигуры можно найти разными способами лучше всего тупо поделить пополам по площади "верх" и "низ" и "лево" и "право".
Если с площадями сложно - можно использовать простой механизм:
Режем по оси X,Y на четное число равных отрезков (например 4). Координата между средними отрезками (конец 2го и начало 3го) и будет условным центром. Если фигура не совсем кривая (то есть круг похож на круг или эллипс) центр практически попадет на центр по площади.
Ответ написан
@Sumor
Прежде чем сравнивать нарисованные круги с эталонным, нужно определиться с мерой по которой вы будете сравнивать. Возможные варианты мер:
1. Радиус.
2. Площадь.
3. Расположение центра
Про расположение центра вам уже написали.
Площадь можно посчитать в точках, расположенных внутри нарисованной фигуры (Цикл по x и y - проверяете принадлежность точки нарисованной фигуре).
Для подсчёта радиуса нужно выбрать количество разбиений круга - 360, 100, 50 и подсчитать отклонение (линейное, квадратичное или любое подходящее) радиуса по указанным направлениям. В простейшем случае можно просто подсчитать максимальный и минимальный радиус нарисованного круга и сравнивать их.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы