Во-первых, вы должны понимать, что отрезок соединительной линии никогда не закончится в середине ребер A и B.
Если это так, а ребра A и B не параллельны, то движение в одну сторонуили другой всегда приведет к более длинному соединительному сегменту.Если ребра A и B параллельны, вы можете перемещаться в обоих направлениях, чтобы найти отрезки соединительной линии равной длины, пока не достигнете вершины, поэтому всегда будет решение с максимальной длиной, которое заканчивается в вершине.
Это сокращает список потенциальных соединительных отрезков до отрезков, которые заканчиваются на вершине.
Итак, для каждой вершины A найдите (до) две точки на линии данного наклона, которая пересекает Bи выберите точку, расположенную дальше всего (если есть).Это сегмент линии-кандидата.
Сделайте то же самое для каждой вершины B, определяя точку пересечения линии A.
Теперь выберите самый длинный сегмент линии из всех этих кандидатов.
Обратите внимание, что вышесказанное будет работать и для вогнутых полигонов.Просто будет больше двух точек, где линия от вершины одного многоугольника пересекает край другого многоугольника.