Domanda

Ho un punto (Lat / Lon) e un'intestazione in gradi (vero nord) per cui questo punto sta viaggiando. Ho numerosi poligoni fissi (punti definiti in Lat / Lon) che possono o meno essere convessi.

La mia domanda è: come faccio a calcolare l'eventuale punto di intersezione più vicino con un poligono. Ho visto diversi post confusi su Ray Tracing ma sembrano tutti collegati al 3D quando Ray e Polygon non sono sullo stesso piano e anche i poligoni devono essere convessi.

È stato utile?

Soluzione 4

La risposta in questa pagina sembra essere la più accurata.

Domanda 1.E GodeGuru

Altri suggerimenti

sembra che dovresti essere in grado di fare un semplice incrocio di 2d linee ...

Tuttavia, ho già lavorato con Lat / Long e so che non sono esattamente fedeli a nessun sistema di coordinate 2D.

Vorrei iniziare con un generale "IsPointInPolygon" funzione, puoi trovarne un milione cercandoti su Google, e poi testalo sui tuoi poli per vedere come funziona. Se sono abbastanza precisi, basta usare quello. Ma è possibile che a causa della natura non quadrata delle coordinate lat / long, potresti dover apportare alcune modifiche usando la geometria sferica.

In 2D, i calcoli sono abbastanza semplici ...

Puoi sempre iniziare controllando che l'endpoint del raggio non sia all'interno del poligono (poiché in questo caso è il punto di intersezione).

Se l'endpoint è fuori dalla linea, è possibile eseguire un'intersezione del segmento raggio / linea con ciascuna delle caratteristiche del contorno del poligono e utilizzare la posizione trovata più vicina. Gestisce funzioni convesse / concave, ecc.

Calcola se il raggio interseca ogni segmento di linea nel poligono usando questa tecnica .

Il fattore di ridimensionamento risultante nella risposta (la mia accettata) (che ho chiamato h ) è " Quanto lungo il raggio è l'intersezione. " Stai cercando un valore tra 0 e 1 .

Se ci sono più punti di intersezione, va bene! Se si desidera prima il "quot", il "quot" usa quello con il valore più piccolo di h .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top