Вот интересное упражнение:найти луч, который пересекает многоугольник, столько раз, сколько возможно
Пусть P быть простым, но не обязательно выпуклый многоугольник и д произвольная точка не обязательно в Р.
Design эффективный алгоритм, чтобы найти отрезок, происходящий от д, пересекающую максимальное число ребер P.
другими словами, если стоять на точке д, в каком направлении вы должны нацелить пушку так пули будет проходить через самое большое количество стен?
Пуля через вершину Р получает кредит только на одну стену.
Возможно использование алгоритма O (n log n). n - число вершин или ребер, так как это многоугольник, число ребер примерно равно числу вершин.
Вот моя мысль:
Connect кв со всеми вершинами (скажем, есть N вершин) в P первой. Будут N строк или N-1 пар линий.
Конечная линия стрельбы должна находиться между этими парами. Таким образом, мы должны найти пару, которая содержит наибольшее количество ребер.
Я не думаю, что это решение - O (n log n).
Любые идеи?
Ничего себе, я понятия не имею. Из любопытства, что здесь?Количество ребер? – Jeremy
Я считаю, что этот вопрос связан: http://stackoverflow.com/questions/4446112/search-for-interval-overlap-in-list-of-intervals. Вы можете выразить каждый сегмент линии в P как пару значений радиана, которые луч из q должен падать между ними. –
Изображение будет в порядке. –