Задаются точками-вершинами. Всё остально я не знаю, и хочу подобрать так, чтобы было проще вычислять (за исключением характера изменений - пока что остановимся на движениях как наиболее простой и логичной форме - без деформаций).
Спасибо.
Самый простой способ — можно, как сказал
Munin, применить метод наименьших квадратов. Сразу к вершинам. Если у фигур совпадают количества вершин, и они даже каким-то образом пронумерованы, можно минимизировать сумму квадратов расстояний от точек фиксированной фигуры до точек подвинутой. Но, наверно, это вряд ли будет. Тогда можно минимизировать сумму квадратов расстояний от каждой точки первой фигуры до каждой точки второй.
Можно взять точки на серединах сторон фигур и использовать вместо вершин. (Не могу прикинуть, не то же ли это самое даст в результате.)
Может быть, вместо расстояния надо будет взять какую-то другую монотонную функцию от него, чтобы расстояния до далёких точки (ведь все со всеми в таком случае совпасть не смогут) не так сильно влияли на картину, как расстояния до близких.
Если выбрать функцию неправильно, метод может предложить уменьшить размер фигуры до нуля и расположить на месте вершины другой.
Надеюсь, ниже будут советы получше.
-- Пн мар 10, 2014 19:13:07 --А! Можно минимизировать площадь симметрической разности внутренностей фигур — тех областей, которые принадлежат одной из них, но не пересечению. Или максимизировать площадь пересечения. Вычислений чуть больше, но наивному представлению о «натягивании» фигур это соответствует, по-моему, намного лучше.