Хочу написать алгоритм который бы получал координаты плоского многоугольника, многоугольников, находящегося внутри заданного многоугольника, чтобы каждая сторона находилась на заданном одинаковом расстоянии от одной из его сторон и не ближе этого расстояния к другим, (аналог команды подобие в Autocad).
Логика которую я сейчас реализовал: для каждой из сторон многоугольника я строю по две линии, удаленные на заданное расстояние от искомой линии (левую и правую относительно направления обхода многоугольника). Нахожу координаты левого и правого многоугольников, которые получаю из пересечения двух соседних линий. Многоугольник меньшей площади будет являться вписанным. (предполагается что исходный многоугольник не имеет пересечений) .
Но если рассматривать работу команды "Подобие" и ее результат сравнить с моим, то в полученном вписанном многоугольнике, может измениться количество вершин - удаляются неправильные - которые не соответствуют условию "не ближе заданного расстояния к стороне". Также добавляются новые. Я могу определить неправильные вершины. Но не могу придумать логику определения новых "Правильных". Как в команде "Подобие". Правильно ли я в целом рассуждаю, и какого алгоритма получения правильных вершин мне не хватает? Результат работы команды "Подобие" и моей привожу на рисунке: Синяя - исходная фигура. красная - ту которую построил мой алгоритм - желтые крестики - неправильные вершины, зеленые точки и линии - фигура которую построило "Подобие". Буду благодарен за любую подсказку или помощь. Тех, кто поломает голову над моей проблемой