Suponiendo que ya tiene el conjunto de datos que desea trazar y el mapa en el que desea trazarlo, puede comenzar creando un mapa de intensidad: una cuadrícula de valores de coma flotante que sea proporcional en los límites del mapa final (si los mapas son lo suficientemente pequeños, 1: 1 probablemente está bien). Inicialice toda la matriz a 0.
Luego camina a través de cada punto que desea trazar, mapearlo en el espacio de coordenadas del mapa de intensidad (que debería ser una operación de escala simple, normalmente), y luego trazar un "punto" en el mapa de intensidad centrado en esa posición.
Un "blip" básico podría consistir en aumentar la intensidad en el punto blip más un poco de radio. Las implementaciones más complejas podrían leer la intensidad existente, y usar un radio de caída más grande cuanto más intenso sea el punto de falla. Puede experimentar con el plotter blip para encontrar una implementación que le guste.
Una vez que tenga un mapa de intensidad, puede usar la intensidad en cada punto individual como una búsqueda 1D en un gradiente de color, lo que le permitirá lograr el impacto visual deseado (así es como puede obtener los resultados multicolores que son más comúnmente visto). Debe realizar esta búsqueda de color a medida que transfiere el mapa de intensidad a su gráfico final (obviamente, reescalando, según sea necesario para tener en cuenta las diferencias de tamaño en el mapa de intensidad frente a la imagen final).
Esto debería ser suficiente para una implementación básica, pero hay espacio para la optimización. Por ejemplo, el mapa de intensidad no se normalizará, por lo que es posible que deba volver a formalizarlo (probablemente lento) o realizar un seguimiento de la intensidad máxima a medida que traza cada señal, para que pueda realizar la renormalización de una intensidad individual al mismo tiempo Estás haciendo la recolorización. Además, es posible que la distribución de sus valores sea tal que no sea eficiente para la memoria almacenar todo el espacio de coordenadas del mapa, y es posible que desee utilizar una solución alternativa que no implique la asignación previa de una gran parte de la memoria eso estará casi vacío.
Si tiene suficientes datos de antemano para consultar las intensidades mínimas y máximas que espera ver en el conjunto de datos, puede evitar tener que renormalizar en absoluto, básicamente si tiene algún mapa entre (X, Y, Z) con el número de " aciertos "de los datos trazados que ocurrieron en ese punto; eso es algo que puede incorporar al sistema que recopila los datos que lo ayudarán a optimizar la porción de mapeo.
Dado que el mapa de intensidad es, esencialmente, una imagen en escala de grises, una forma realmente fácil de crear un prototipo de este tipo de sistema para usar un mapa de bits para el mapa de intensidad y su API de dibujo de elección (por ejemplo, System.Drawing
en C #) para trazar círculos parcialmente transparentes para producir un mapa de intensidad. No se ve mejor, pero es funcional.