Ищет алгоритм O (logn) для идентификации сегментов линии выпуклого многоугольника, которые пересекаются с расширенным отрезком линии. Как известно, сегмент линии лежит внутри выпуклого многоугольника.
Пример: Входной сигнал: AB/Отрезок /, {1,2,3,4,5,6}/выпуклого многоугольника вершины в порядке КОО Alongwith их координаты/
Выход: 3-4,5 -6Пересечение отрезка и выпуклого многоугольника
Это может быть сделано путем получения уравнения всех линий и проверить, если они пересекаются, но это было бы O (п) в п строк, должны быть проверены на наличие пересечения. Я думаю, что должно быть возможно использовать Двоичный поиск (из-за логарифмической привязки), чтобы уменьшить сложность, но я не могу понять, что его применять.
Да, бинарный поиск мог бы сделать трюк здесь. И еще один намек - вы можете использовать, что кросс (векторный) продукт точек многоугольника, который ниже строки, как отрицательный (положительный), так и точки стороны, которая выше линии, являются как положительными (отрицательными) , Надеюсь, что это поможет, и это не портит его слишком плохо. – yasen
На что я могу применить двоичный поиск? –
У меня есть идея, но для этого есть некоторые угловые случаи. Я постараюсь полностью определить эту идею, и когда я закончу, я вернусь к вам. (короче говоря, вы можете использовать тройной поиск на расстоянии от линии, но в некоторых случаях вы можете потерять решения таким образом) – yasen