🔘 Próbkowanie Poisson-disk
Sampler niebieskiego szumu Bridsona w akcji: lista aktywna rośnie, przyjmując kandydatów w odległości od r do 2r — i odrzucając wszystko bliżej niż r. Porównaj z losowaniem jednostajnym i obejrzyj widmo radialne.
Podobne symulacje
O tej symulacji
Ta symulacja implementuje algorytm Bridsona do próbkowania dysku Poissona (Poisson-disk sampling): szybki sposób rozmieszczania punktów przyspieszany siatką, tak by żadne dwa punkty nie znajdowały się bliżej niż wybrany promień minimalny r, bez skupisk i luk typowych dla czysto losowego rozmieszczenia. Każdy nowy punkt jest generowany z aktywnego punktu-rodzica przez wypróbowanie do k kandydatów w pierścieniu [r, 2r] wokół niego, a siatka tła o rozmiarze komórki r/√2 pozwala sprawdzać odległość do sąsiadów w czasie O(1), dzięki czemu cały algorytm skaluje się jako O(n). Powstały zbiór punktów ma statystyczną sygnaturę szumu niebieskiego (blue noise) — niskoczęstotliwościowe skupienia są tłumione, co widać na bieżącym radialnym widmie mocy.
🔬 Co pokazuje
Trzy strategie generowania punktów obok siebie: szum niebieski Bridsona, jednolite losowe rozmieszczenie oraz regularną siatkę. Fioletowe kropki oznaczają punkty wciąż znajdujące się na liście aktywnej (mogą jeszcze zrodzić kandydatów); białe kropki to punkty „martwe", których sąsiedztwo jest już wypełnione. Wokół każdego odrzuconego lub zaakceptowanego kandydata pojawia się delikatny pierścień w kolorze czerwonym lub fioletowym w trakcie działania algorytmu.
🎮 Jak korzystać
Przełączaj tryby za pomocą przycisków radiowych, a następnie dostosuj promień minimalny r (6–40px) i liczbę prób k (5–60) — wyższe k pozwala znaleźć ciaśniejsze upakowanie kosztem większej liczby odrzuconych kandydatów. Prędkość animacji kontroluje liczbę punktów generowanych na klatkę. Włącz zmienny promień (gęstość) i maluj mapę gęstości, by przeciągać bezpośrednio po płótnie i rzeźbić obszary o gęstszym lub rzadszym próbkowaniu; przełącz pokazywanie siatki tła i podglądu widma radialnego, by zobaczyć strukturę przyspieszającą i sygnaturę szumu niebieskiego.
💡 Czy wiesz, że…
Zbiory punktów próbkowania dysku Poissona (szum niebieski) są cenione w grafice komputerowej właśnie dlatego, że ludzki wzrok jest bardzo wrażliwy na niskoczęstotliwościowe skupienia — dlatego szum niebieski jest wykorzystywany do ditheringu obrazów, rozmieszczania drzew czy trawy w terenie gier, próbkowania pikseli w ray tracerach, a nawet rozmieszczania komórek fotoreceptorowych w siatkówce oka, które — jak odkryli biolodzy — podążają za wzorem zbliżonym do rozmieszczenia dysku Poissona.
Najczęściej zadawane pytania
Czym jest próbkowanie dysku Poissona?
Próbkowanie dysku Poissona generuje zbiór losowych punktów w przestrzeni w taki sposób, że każda para punktów jest oddalona od siebie o co najmniej minimalną odległość r, a mimo to wygląda nieregularnie i organicznie, a nie jak siatka. Znajduje się pomiędzy w pełni losowym rozrzuceniem (które tworzy skupiska) a regularną siatką (która wygląda sztucznie) i jest standardowym sposobem uzyskiwania rozkładów punktów typu „szum niebieski".
Jak krok po kroku działa algorytm Bridsona?
Zaczyna się od jednego losowego punktu początkowego, dodawanego do „listy aktywnej". Powtarzalnie wybierany jest losowy punkt z listy aktywnej i próbuje się do k losowych kandydatów w pierścieniu między r a 2r wokół niego. Pierwszy kandydat oddalony o co najmniej r od wszystkich istniejących punktów jest akceptowany i dodawany zarówno do zbioru punktów, jak i do listy aktywnej; jeśli żadna z k prób się nie powiedzie, punkt-rodzic jest usuwany z listy aktywnej. Proces kończy się, gdy lista aktywna jest pusta.
Dlaczego algorytm wykorzystuje siatkę tła?
Sprawdzanie nowego kandydata względem wszystkich istniejących punktów zajęłoby czas O(n) na kandydata, co czyniłoby cały algorytm O(n²). Kluczowy trik Bridsona to siatka tła o rozmiarze komórki r/√2, dobranym tak, by każda komórka mogła pomieścić co najwyżej jeden zaakceptowany punkt. Kandydat musi sprawdzić jedynie swoją komórkę i otaczające sąsiedztwo (niewielką, stałą liczbę komórek), więc każde sprawdzenie działa w czasie O(1), a cały algorytm działa w czasie O(n) dla n punktów wyjściowych.
Czym jest „szum niebieski" i dlaczego ma znaczenie?
Szum niebieski opisuje rozkład punktów, którego widmo mocy ma niewiele energii przy niskich częstotliwościach przestrzennych — co oznacza brak dużych skupisk czy dużych pustych luk, a jedynie drobnoziarnistą, równomiernie rozłożoną zmienność. Ta właściwość jest istotna wizualnie, ponieważ ludzkie oko jest bardzo wrażliwe na wzorce niskoczęstotliwościowe, takie jak skupiska czy artefakty mory. Dlatego próbkowanie szumem niebieskim jest standardową techniką stosowaną w kropkowaniu, ditheringu, wygładzaniu krawędzi (anti-aliasingu) oraz proceduralnym rozmieszczaniu obiektów, takich jak drzewa, kamienie czy trawa, w naturalnie wyglądający sposób.
Jak próbkowanie ze zmiennym promieniem tworzy gradienty gęstości?
Zamiast używać jednego stałego promienia r wszędzie, lokalna minimalna odległość może być odczytywana z mapy gęstości: mały promień jest stosowany w obszarach gęstych (pozwalając punktom leżeć bliżej siebie), a większy promień w obszarach rzadkich (rozsuwając punkty dalej od siebie). Sprawdzanie sąsiedztwa wykorzystuje wtedy większy z dwóch promieni — kandydata i każdego istniejącego punktu — dzięki czemu upakowanie pozostaje spójne wszędzie. Daje to płynnie zmieniającą się gęstość punktów przy zachowaniu tej samej gwarancji braku nakładania się wszędzie, co jest właśnie tym, co można wyrzeźbić ręcznie za pomocą narzędzia malowania mapy gęstości.