Zakładając, że masz zestaw danych, który chcesz już narysować, i mapę, na której chcesz narysować, możesz zacząć od utworzenia mapy intensywności: siatki wartości zmiennoprzecinkowych, która jest proporcjonalna w granicach do ostatecznej mapy (jeśli mapy są wystarczająco małe, 1: 1 jest prawdopodobnie w porządku). Zainicjuj całą tablicę na 0.
Następnie przechodzisz przez każdy punkt, który chcesz narysować, odwzorowujesz go w przestrzeni współrzędnych mapy intensywności (co zwykle powinno być prostą operacją skalowania), a następnie wykreślasz „blip” na mapie intensywności wyśrodkowany w tej pozycji.
Podstawowy „blip” może po prostu polegać na zwiększeniu natężenia w punkcie blipu o pewien promień o niewielką wartość. Bardziej złożone implementacje mogą odczytać istniejącą intensywność i zastosować większy promień opadania, tym bardziej intensywny jest już punkt załamania. Możesz eksperymentować z ploterem Blip, aby znaleźć implementację, która Ci się podoba.
Po utworzeniu mapy intensywności można użyć intensywności w każdym punkcie jako efektu 1D w gradiencie kolorów, co pozwoli osiągnąć pożądany efekt wizualny (w ten sposób można uzyskać wielokolorowe wyniki, które są najczęściej spotykane). Powinieneś wykonać to wyszukiwanie kolorów, przenosząc mapę intensywności na ostateczny wykres (przeskalowanie, oczywiście, jeśli jest to konieczne, aby uwzględnić różnice wielkości na mapie intensywności w porównaniu z ostatecznym obrazem).
To powinno wystarczyć do podstawowej implementacji, ale jest miejsce na optymalizację. Na przykład mapa intensywności nie zostanie znormalizowana, więc może być konieczne jej ponowne znormalizowanie (prawdopodobnie powolne) lub śledzenie maksymalnej intensywności podczas kreślenia każdego blipu, aby można było przeprowadzić renormalizację indywidualnej intensywności w tym samym czasie wykonujesz ponowne kolorowanie. Ponadto możliwe jest, że rozkład twoich wartości jest taki, że przechowywanie całej przestrzeni współrzędnych mapy nie jest efektywne pod względem pamięci i możesz użyć alternatywnego rozwiązania, które nie wymaga wstępnego przydzielenia dużej części pamięci które będą w większości puste.
Jeśli masz już wystarczająco dużo danych, aby zapytać o minimalną i maksymalną intensywność, jakiej spodziewasz się w zestawie danych, możesz w ogóle uniknąć ponownej normalizacji - w zasadzie, jeśli masz mapę między (X, Y, Z) do liczby „ trafienia ”wykreślonych danych, które wystąpiły w tym momencie - jest to coś, co można wbudować w system, który zbiera dane, które pomogą zoptymalizować część mapowania.
Ponieważ mapa intensywności jest po prostu obrazem w skali szarości, jest to naprawdę łatwy sposób na stworzenie prototypu tego rodzaju systemu w celu użycia mapy bitowej dla mapy intensywności i wybranego interfejsu API rysowania (na przykład System.Drawing
w języku C #) do wykreślenia częściowo przezroczystych kół stworzyć mapę intensywności. Nie wygląda najlepiej, ale jest funkcjonalny.