Правильный ответ зависит от общей картины проблемы: что происходит, когда вы принимаете во внимание несколько запросов? Я предполагаю, что каждый запрос будет иметь дело с другой точкой. Но как насчет многоугольника? Ожидаете ли вы получить несколько запросов для одного и того же полигона? Или каждый раз полигон отличается?
Если каждый запрос применяется к другому непредсказуемому многоугольнику, то единственное решение, которое у тебя есть, - это, по сути, полная проверка всех ребер многоугольника с тестированием расстояния от точки к сегменту для каждого из них. Его можно оптимизировать различными [эвристическими] способами (чтобы раньше отбрасывать ненужные тесты), но в худшем случае нет полного обхода полного теста.
Однако, если вы ожидаете какой-то предсказуемости и стабильности на стороне многоугольника задачи (достаточно много точечных запросов к одному и тому же многоугольнику или к фиксированному набору многоугольников), то ситуация кардинально меняется. Наилучшим подходом в этом случае было бы предварительно построить диаграмму Вороного на основе ребер внутри многоугольника (ов). Затем вы можете решить проблему определения местоположения точки (для которой существуют известные эффективные алгоритмы), чтобы определить, в какую область Вороного попадает точка запроса. Это сразу скажет вам, какой край является ближайшим.
Последнее несравнимо более эффективно, когда вам нужно обрабатывать много точечных запросов к одному и тому же полигону, но требует больших усилий для реализации. Итак, все зависит от того, какое решение вам нужно.
P.S. Я вижу, что вы заявляете в своем вопросе, что вы собираетесь запустить его для большого набора точек для одного многоугольника. Это сразу делает решение на основе диаграмм Вороного верным. Дополнительные нюансы алгоритма могут зависеть от того, известен ли этот большой набор точек заранее или он поступает по точкам непредсказуемым образом.