sono stato alle prese con un problema per un po 'e finora non hanno trovato una soluzione migliore, allora l'ingenuo uno:Come trovare prima intersezione di un raggio con cerchi in movimento
N cerchi sono dati che si stanno muovendo secondo a una legge lineare. Per ognuno dei cerchi abbiamo il suo raggio iniziale (momento 0.0), le coordinate iniziali e il suo raggio e le coordinate al momento 1.0 (momento finale). Abbiamo anche raggi k dati con coordinate della loro origine e un vettore lungo il raggio. Ogni raggio esiste solo in un dato momento t k. Devo essere in grado di trovare la prima intersezione di un raggio con uno qualsiasi dei cerchi. Il numero previsto di k è piuttosto grande (milioni o miliardi) e il numero atteso di cerchi (migliaia). Ho bisogno di una soluzione più veloce quindi controllo tutti i raggi contro tutti i cerchi.
Ho cercato su Internet per un po 'di tempo, ma non ho trovato un buon approccio alla soluzione. Sarà apprezzata anche un'idea per il più facile problema dei cerchi che non si muovono.
Ho la sensazione che un albero di kd dovrebbe essere appropriato per il caso statico e forse un kd-tree cinetico risolverà quello più difficile. Ancora non riesco a capire come usare kd-tree anche per quello più facile.
Ho considerato un simile approccio ma la cosa negativa è che non migliora la complessità del caso peggiore. –
Intendi il caso peggiore a causa della presenza di tronconi densi (sovrapposti) o del numero di partizioni controllate? – Ante
Numero di controlli delle partizioni. Immagino che tu metta solo i centri dei cerchi nell'albero kd e che i loro raggi possano essere scelti in modo tale da non ottenere alcuna ottimizzazione effettiva. –