Я использую простую геометрию: векторы и / или тригонометрию
В каждом углу найдите средний вектор и средний угол. Средний вектор - среднее арифметическое двух единичных векторов, определяемых ребрами угла. Средний угол - это половина угла, определенного краями.
Если вам нужно расширить (или сжать) свой многоугольник на величину d от каждого ребра; Вы должны выйти (в) на величину d / sin (midAngle), чтобы получить новую угловую точку.
Повторите это для всех углов
*** Будьте осторожны в вашем направлении. Сделайте CounterClockWise Test, используя три точки, определяющие угол; выяснить, какой выход, или в.