Nie sądzę, aby było na to jedno polecenie, ale nadal możemy to zrobić celowo. Chodzi o to, że odległość do najbliższej innej komórki jest równa odległości do najbliższej lokalizacji, której bezpośrednie sąsiedztwo zawiera więcej niż jeden typ komórki.
Cóż, nie jest to do końca prawdą, ale jest blisko: możesz chcieć dodać w przybliżeniu jedną szerokość komórki do takiej odległości. Jeśli możesz żyć z takim przybliżeniem, oto przepływ pracy:
Oblicz siatkę ogniskowych odmian, używając możliwie najmniejszej dzielnicy, która byłaby dzielnicą kwadratową 2 na 2.
Zniszcz wszystkie lokalizacje za pomocą odmiany ogniskowej 1 lub mniejszej: są to komórki „wewnętrzne”.
Oblicz euklidesową siatkę odległości do wszystkich pozostałych komórek: są to odległości do lokalizacji wzdłuż granic.
(Opcjonalnie) Dodaj rozmiar komórki do siatki odległości.
Wyodrębnij wartości w dowolnych wybranych punktach.
Aby to zilustrować, oto mały kawałek siatki pokolorowanej według typu komórki. Czarne obszary to komórki z ogniskowymi odmianami 2 lub większymi (obliczonymi w kroku 2):
Wyrównana do góry euklidesowa siatka odległości wygląda następująco:
Osiąga szczyty (wartości maksymalne) w środkach każdej łatki oryginalnego rastra i zanika do zera wzdłuż granic łaty, wciąż pokazanych na czarno.