La risposta giusta dipende dal-quadro più ampio struttura del problema: cosa succede quando prendi in considerazione più query? Suppongo che ogni query riguarderà un punto diverso. Ma per quanto riguarda il poligono? Ti aspetti di ricevere più query per lo stesso poligono? O ogni volta che il poligono è diverso?
Se ogni query viene applicata a un poligono diverso e imprevedibile, l'unica soluzione disponibile è essenzialmente l'ispezione totale di tutti i bordi del poligono con test della distanza punto-segmento per ciascuno. Si può essere ottimizzata in vari [euristica] (modi per annullare le prove inutili presto), ma nel peggiore dei casi non c'è modo per aggirare il test completo.
Tuttavia, se ci si aspetta una sorta di prevedibilità e stabilità sul lato poligonale del problema (un numero sufficiente di query puntuali allo stesso poligono o a un set fisso di poligoni), la situazione cambia drasticamente. L'approccio migliore in questo caso sarebbe quello di pre-costruire il diagramma Voronoi edge-based all'interno del poligono (s). Quindi è possibile risolvere il problema di punto-posizione (per la quale non sono noti algoritmi efficienti) per determinare quale regione Voronoi punto interrogazione cade. Che immediatamente vi dico quale bordo è il più vicino.
Quest'ultimo è incomparabilmente più efficiente quando si ha bisogno di gestire molte punto-query per lo stesso poligono (s), ma richiede piuttosto uno sforzo per implementare. Quindi, tutto dipende dal tipo di soluzione di cui hai bisogno.
P.S. Vedo che indicare nella sua domanda che la vostra intenzione di correre per un grande insieme di punti per un singolo poligono. Ciò rende immediatamente la soluzione basata sul diagramma di Voronoi la strada da percorrere.Ulteriori sfumature dell'algoritmo potrebbero dipendere dal fatto che quell'ampio insieme di punti sia del tutto noto in anticipo o arrivi punto per punto in modo imprevedibile.
Solo per l'ordine di 100 punti, questo NON è un grande insieme di punti, a meno che non si stiano facendo migliaia di miliardi di volte, o meno che il poligono stesso abbia gazillions di bordi. A un certo punto potrebbe essere utile una decomposizione quadrupla. Prima di arrivare a quel punto, è piuttosto facile risolvere per la distanza da un punto a un segmento di linea, anche in una forma vettoriale, se la tua lingua consente un calcolo simile. –