Come posso calcolare il percorso più breve in ambienti euclidei con poligoni non convessi?


10

Qualcuno può suggerire documenti o algoritmi sul calcolo dei percorsi più brevi negli spazi euclidei con poligono non convesso come ostacoli?


Si noti che a meno che il punto iniziale, il punto finale o un altro poligono si trovino nello spazio tra un poligono non convesso e il suo scafo convesso, è possibile sostituire il poligono non convesso con il suo scafo complesso. Facile da vedere semplicemente disegnando un poligono non convesso e il suo scafo convesso, quindi considerando quali percorsi più brevi attraversano la differenza.
Salterio del

Risposte:


3

L'approccio più semplice è quello di trasformare i poligoni non convessi in multipli poligonali, quindi eseguire la normale collisione convessa e l'individuazione del percorso (via A * o D * o altro). Il primo processo è spesso chiamato triangolazione nella geometria computazionale e ci sono molti modi comuni per farlo.


3

Questa potrebbe non essere la risposta esatta alla tua domanda, ma potrei suggerirti un approccio su questo problema.

In realtà il tuo problema sono due problemi combinati.

  1. Trovare percorsi più brevi
  2. Trovare collisioni

E il secondo problema è incorporato nel primo. Potrei raccomandare di capire prima la ricerca cieca. Ecco una presentazione molto semplice al riguardo: Ricerca cieca

Se leggi il documento per la costruzione dello spazio degli stati, dovrai generare punti di stato e questi devono essere legali, nel senso che questi stati possono trovarsi sul tuo percorso più breve, quindi non devono scontrarsi con alcun oggetto nel tuo spazio. Da ora in poi puoi continuare con gli algoritmi di collisione euclidea. Dopo aver creato lo spazio degli stati e l'albero di ricerca limitato con le collisioni, è possibile scegliere uno degli algoritmi del percorso più breve o uno dei propri o uno ibrido modificato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.