Réponse mise à jour et réécrite à partir de zéro.
On vous donne un polytope . Exécutez la hiérarchie Dobkin-Kirkpatric sur P. Cela vous donne une séquence de polytops P 1 ⊆ P 2 ⊆ ... ⊆ P k = P . Supposons que vous souhaitiez trouver le point le plus proche sur P d'un point de requête q . L'algorithme de base commence par calculer le point le plus proche c 1 à q sur P 1 , puis il considère toutes les nouvelles régions (tentes) adjacentes àPP1⊆ P2⊆ … ⊆ Pk= PPqc1qP1 , trouve le point le plus proche c 2 à qc1c2qdans ces nouvelles régions, et continuer de cette façon jusqu'à atteindre .Pk
Maintenant, si est sur un bord, alors il n'y a pas de problème - seules deux tentes peuvent toucher ce bord, ou une seule d'entre elles peut couvrir le bord. En tant que tel, la mise à jour de c i + 1 à partir de C i dans ce cas prend un temps constant.cjeci + 1Cje
Le problème est donc lorsque se trouve sur un sommet de haut degré, car alors le nombre de nouvelles tentes adjacentes lors du passage à P i + 1 peut être important. Pour surmonter cela, nous allons simuler un sommet de grand degré comme une collection de sommets de faible degré. En particulier, à chaque étape, si c i se situe sur un sommet v , on va se souvenir de deux arêtes consécutives e i , e ′ i adjacentes à v , de sorte que le point le plus proche de q dans P i + 1cjePi + 1cjeveje, e′jevqPi+1repose sur une tente qui est adjacente ou couvre l'un de ces deux bords. En tant que tel, nous pouvons faire le calcul requis en temps constant.
Donc, nous restons avec le problème de savoir comment garder une trace de ces deux bords lorsque nous montons.
Pour ce faire, pré-calculer pour chaque sommet de P une direction tangente t v . Soit Q i ( v ) le polygone convexe qui est la figure de sommet de v pour le polygone P i (le plan définissant la figure de sommet ayant une normale dans la direction de t v ). Conceptuellement, Q 1 ( v ) , Q 2 ( v ) , . . vPtvQi(v)vPitvQ1(v),Q2(v),...,Qk(v)se comporte comme une hiérarchie 2D 2D. Si le point le plus proche sur à q se trouve sur un sommet w, cela correspond à v et à une arête adjacente e dans P i , où l'arête e coupe le plan de la figure de sommet en w . Si le point le plus proche sur Q i ( v ) à q se situe sur une arête e ′ , alors vous vous souvenez des deux arêtes adjacentes de P i qui définissent les deux sommets de e ′ (iciQi(v)qwvePiewQi(v)qe′Pie′ appartiennent àe′ ).Qi(v)
Et maintenant, nous avons terminé ... En effet, si est également sur Q i + 1 ( v ), nous pouvons le mettre à jour en temps constant (car ce n'est qu'une hiérarchie DK 2d). Si par contre c i + 1 n'est plus sur Q i + 1 ( v ) alors elle doit appartenir à une nouvelle tente adjacente ou couvrant le point précédent c i . Dans les deux cas, nous pouvons le mettre à jour en temps constant.ci+1Qi+1(v)ci+1Qi+1(v)ci