Tengo un conjunto de datos (perfil espectrográfico) de Longitud de onda (eje x) e Intensidad (eje y, en unidades arbitrarias que pueden tener diferentes rangos ... .)Cómo crear una imagen de pantalla de TColors e intensidades (en Delphi)
Quiero convertir estos datos numéricos a una vista gráfica como se muestra en la parte inferior de la imagen a continuación.
Pero, nunca he hecho nada en Delphi (2010) con Canvas, TImages, mapas de bits, o cualquier otra forma en que pueda obtener esto en la pantalla.
(Obviamente, si puedo convertir mis datos a una fila de píxeles de la imagen, que luego simplemente copiar esa fila tantas veces como sea necesario para mi altura de la imagen deseada.)
¿Puede alguien me punto en la dirección correcta ¿O suministra código de muestra que atraviesa los valores x, y, creando la imagen en color? Espero que mi solución me permita (o el usuario) ajustar los niveles (contraste, brillo).
Gracias de antemano.
relacionados SO mensajes: Algorithm to convert any positive integer to an RGB value
Convert light frequency to RGB?
De hecho, tengo una función (en la muy buena biblioteca de componentes SDL) que convierte HSI a RGB: procedimiento HSItoRGB (Hue, Sat, Intens: double; var r, g, b: integer); ¿Entonces mi problema ahora es cómo pasar de WaveLength a HSI? – RobertFrank
bastante simple en realidad. Calcula la diferencia entre la longitud de onda 0 y el tono 0, y luego normaliza el eje x a un rango de 0..255, y esa es tu H. Normaliza el eje Y a 0..255, y esa es tu L. S siempre es 255 , para producir los colores brillantes y vibrantes que muestra tu ejemplo. –
¡Gracias, Mason! Todavía no estoy seguro de cómo mapear la longitud de onda (o frecuencia de la luz) a la tonalidad aunque ... – RobertFrank