Mam zestaw danych (profil spektrograficzny) długości fali (oś x) i intensywności (oś y, w dowolnych jednostkach, które mogą mieć różne zakresy) .)Jak utworzyć obraz ekranu z TColors i intensywności (w Delphi)
Chcę przekonwertować te dane numeryczne na widok graficzny, jak pokazano na dole obrazu poniżej.
Ale, nigdy nie zrobiłem nic w Delphi (2010) z Canvas, TImages, bitmapami lub w jakikolwiek inny sposób, który dostałbym to na ekran.
(Oczywiście, jeśli mogę przekonwertować moje dane do jednego rzędu pikseli obrazu, ja po prostu skopiować ten wiersz tyle razy, ile potrzeba dla mojego pożądanej wysokości obrazu.)
Czy ktoś może wskazać mi w dobrym kierunku lub podać przykładowy kod, który przechodzi przez wartości x, y, tworząc kolorowy obraz? Mam nadzieję, że moje rozwiązanie pozwoli mi (lub użytkownikowi) dostosować poziomy (kontrast, jasność).
Z góry dziękuję.
Podobne SO wypowiedzi: Algorithm to convert any positive integer to an RGB value
Convert light frequency to RGB?
Rzeczywiście mam funkcję (w bardzo ładnej bibliotece komponentów SDL), która konwertuje HSI na RGB: procedura HSItoRGB (Hue, Sat, Intens: double, var r, g, b: integer); Więc moim problemem jest jak przejść z WaveLength do HSI ?! – RobertFrank
Całkiem proste w rzeczywistości. Oblicz różnicę między długością fali 0 i barwą 0, a następnie znormalizuj oś x do zakresu 0..255, a to twoja H. Normalizuj oś Y do 0..255, a to twoja L. S jest zawsze 255 , aby uzyskać jasne, żywe kolory, które pokazuje twój przykład. –
Dzięki, Mason! Nadal nie wiesz, jak odwzorować długość fali (lub częstotliwość światła) na odcień ... – RobertFrank