Envoyé par
leternel
Petite remarque, un vector trié permet une recherche en logN via std::binary_search.
Pour la 3D, le quad tree est remplacé par un octree. Ces deux techniques ne sont finalement que de la dichotomie simultanée sur les différents axes.
Cela dit, chercher un ensemble de projections uniques parmi N points, ca prend quand même N projections et N log N comparaisons.
Avec N = 1,7 millions, ca doit normalement prendre 1,7 millions fois presque rien (un produit scalaire et une addition vectorielle, soit une vingtaine de multiplication à tout casser)
et 10 millions de comparaisons de points, soit 30 millions de comparaisons numérique.
Ajoute les copies, on doit avoir a peu pres 100 millions d'opérations.
Soit pas plus d'une dizaine de seconde à 1 GHz
La différence pour moi, c'est avant tout N² comparaison (car pas de set ou de tri du vector), sinon, des copies trop nombreuses (pas de assez d'utilisation des références)
N² vallant dans le cas présent trois mille milliards, soit 3000 secondes à 1GHz, je pense que c'est bien là le problème.
Partager