Масштабирование произвольного многоугольника

Я рыскал по Интернету несколько дней, но не смог найти хорошего ответа (или хотя бы такого, который имел бы для меня смысл) на то, что, кажется, должно быть обычным вопрос. Как масштабировать произвольный многоугольник? В частности, вогнутые многоугольники. Мне нужен алгоритм, который может обрабатывать вогнутые (определенно) и самопересекающиеся (если возможно) многоугольники. Очевидный и простой алгоритм, который я использовал для обработки простых выпуклых многоугольников, вычисляет центр тяжести многоугольника, переводит этот центроид в начало координат, масштабирует все вершины и переводит многоугольник обратно в исходное положение.

Этот подход не работает для многих (или, возможно, всех) вогнутых многоугольников, поскольку центроид часто выходит за пределы многоугольника, поэтому операция масштабирования также приводит к перемещению, и мне нужно иметь возможность масштабировать многоугольник «на месте» без переводится окончательный результат.

Кто-нибудь знает метод масштабирования вогнутых многоугольников? Или, может быть, способ найти «визуальный центр», который можно использовать в качестве системы отсчета для операции масштабирования?

Чтобы уточнить, я работаю в 2D-пространстве, и я хотел бы масштабировать свои многоугольники с помощью « визуальный центр »как ориентир. Так что, может быть, еще один способ задать вопрос: как мне найти визуальный центр вогнутого и / или самопересекающегося многоугольника?

Спасибо!

6
задан Craig 26 July 2011 в 14:01
поделиться