Tworzysz kubeczki o dowolnych zadowalających Cie rozmiarach tak żeby się nie zazębiały przechowujesz je w zmodyfikowanje hasz tablicy z pointem jako kluczek, tablica ma działać tak by zwracać Ci kubeczek w wnętrzu którego leży ten punkt. Piszesz funkcje która dla wybranego punktu "kreśli" okręgi (wybiera punkty na średnicy) o coraz to większych promieniach. te pukty to współdłużne kubeczka do sprawdzenia. Liczysz dla każdego ptk w kubku odległość zapisujesz do zmodyfikowanego kopca który, przechowuje zawsze tylko określoną ilość elementów. gdy Ci się ten kopiec zapełni możesz przerwać szukanie po przeleceniu aktualnego promienia do końca, kazdy punkt o większym promieniu siła rzeczy będzie dalej. będziesz potrzebował skończoną znaną z góry ilość pamięci na użytkownik. Może da rade to za implementować sensownie.
Ostatnio/Aktualnie wczytane kubki można przechowywać w wspólnej strukturze danych, najpierw sprawdzasz czy masz już wczytany ten kubeczek, jesli nie to wczytujesz i przeliczasz. Samo to plus zmodyfikowany kopiec powinno dużo zasobów oszczedzić.
Moze da rade zrobić to tak że dzielisz metodą dziel i zwyciężaj, na cześci o coraz większej rodzielczości, np połowa ziemi jedna czwarta jedna ósma, szesnasta itd. Dla każdej takiej sekcji przechowujesz ilość ptk wewnątrz, tak długo i zmienisz średnice swojeko kólka(zwiekszasz rozdzielczość) aż ilosć ptk w środku będzie będzie najbliższa to szukanej wartości(metodą biskcji broń boze liniowo), bierzesz pierścień o jeden rozmiar większy(bład kwantowania) i filtrujesz zewnętrzną krawędź aż będzie Ci się zgadzać liczba punktów. Punktu głębiej przepisujesz w ciemno
MAM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
To samo w druga stronę kreślisz coraz większe koła po kubeczkach nie czytasz ich tylko ich rozmiar aż n wyniesię tyle ile trzeba domykasz pierścień i sprawdzasz zewnętrzna krawędz :D. Łatwe w implementacji :)
W sumie to teraz to nie są kubki z ptk tylko mapa gęstości ptk, jeśli napiszesz takich map kilka o coraz mniejszej rozdzielczości to będziesz miał gęstość uśrednioną, a to pozwoli Ci zgadnąć wymiary koła bez kreślenia kółek :D W sumie to przed ostatnia metoda ale forma wydaje się bardzie przystępna.
jeśli będziesz współdzielił dane miedzy userami to wyjdzie elegancko :D.
Jakbyś napisał osobne metody dal małych dancyh, i nie zależnie wysyłał środek i obliczał zewnetrzny promień to by byla bajka :D
A jeśli gdzieś sensownie spamiętasz skuteczność trafień, pudło jest kosztowne, to po będziesz mógł z optymalizować swój algorytm, i bedzie śmigal szybciej :D