Qual è il modo migliore per archiviare dati di nuvole di punti 3D, ottimizzando il tempo necessario per trovare tutti i punti in una sfera di spazio 3D e anche il tempo necessario per inserire nuovi punti di dati in il set di dati?
Sfondo:
Ho una nuvola di dati di punti 3D (con ogni punto che include anche altri dati allegati) e devo essere in grado di interrogarla per trovare rapidamente tutti i punti all'interno di una sfera specifica dello spazio 3D specificata dall'utente, così come per aggiungere rapidamente punti al set di dati.
La mia attuale implementazione utilizza un ingenuo array lineare di punti dati, ma non sorprende che non si riduca bene con il crescere del mio set di dati.
La mia priorità è la velocità, sia per trovare punti nel cloud sia per inserire nuovi punti nel cloud (vorrei davvero evitare di dover riequilibrare gli alberi dopo ogni inserimento, se posso). Non elimino mai punti dal set di dati, quindi la velocità per la rimozione dei punti non è affatto importante. Anche l'utilizzo della memoria non è importante - Sono abbastanza felice di gettare memoria a questo problema, se accelera le cose!