Войти
ПрограммированиеФорумГрафика

wavelength2rgb

Страницы: 1 2 3 Следующая »
#0
18:37, 14 авг. 2017

Хочется иногда рисовать спектр, и всякие родственные вещи.

Можно юзать хаки и аппроксимировать, но охота получить наиболее математически правильную версию, а уж потом смотреть что с ней делать.

Так как я не особо знаток в колориметрии, то просьба проверить не чушь ли я пишу.

+ Показать

#1
18:45, 14 авг. 2017

Выглядит так:
wavelength_RGB_on_gray_background | wavelength2rgb

На сером фоне, и всё-равно куча отрицательных RGB.

#2
20:38, 14 авг. 2017

FordPerfect
Че то не очень оно выглядит

#3
21:52, 14 авг. 2017

FordPerfect
Это в srgb?

#4
22:21, 14 авг. 2017

Ты хочешь звуковой спектр в цвете отобразить или имеется в виду световой спектр?

#5
22:37, 14 авг. 2017

ArchiDevil
sRGB.
Функция - линейные, на картинке гамма.

foxes
Световой.

#6
22:42, 14 авг. 2017

В спектре нет пурпурного цвета.
Если же нужна шкала оттенков, то отрисовать ее можно, используя преобразование HSV->RGB
HSV

#7
0:23, 15 авг. 2017

FordPerfect
> и всё-равно куча отрицательных RGB.
Неудивительно, ибо подкова чистых цветов лежит за пределами RGB треугольника.
Я бы сказал, там не просто куча, а абсолютно все.

Попробуй снизить насыщенность (разбавить белым цветом), ну и гамму надо раскомментировать.

#8
0:31, 15 авг. 2017

}:+()___ [Smile]
> Неудивительно, ибо подкова чистых цветов лежит за пределами RGB треугольника.
Ну у него справедливости ради и спектр тотально не верный. Переходы резкие, от синего вообще одна полоска осталась.
https://en.wikipedia.org/wiki/Visible_spectrum

#9
0:59, 15 авг. 2017

MrShoor
> Переходы резкие, от синего вообще одна полоска осталась.
Это издержки перевода запредельных значений внутрь RGB-треугольника.
Ибо верный спектр отобразить принципиально невозможно и надо искать "наиболее похожий цвет" в какой-то норме.

Я бы соединил требуемый цвет с белым и искал пересечение с треугольником.
По идее, должно быть более красиво.

#10
1:10, 15 авг. 2017

}:+()___ [Smile]
На картинке гамма применена.
Но я похоже накосячил (с серым, что-ли, складывал после гаммы, что хрень).

Вот этот код
http://rextester.com/VGYK15607
выдаёт
wavelength | wavelength2rgb

#11
1:13, 15 авг. 2017

}:+()___ [Smile]
> Ибо верный спектр отобразить принципиально невозможно и надо искать "наиболее
> похожий цвет" в какой-то норме.
Это верно, но если у тебя например вектор (3.4, 2.2, 1.1), а отображать ты можешь только целые в диапазоне [0;3], то такой вектор надо представить как (3.0, 2.0, 1.0), а сейчас там что-то в духе (2.0, 2.0, 0.0). Отмазка в духе: "Он же не может представить (3.4, 2.2, 1.1) в наших ограничениях, поэтому представляет его как (2.0, 2.0, 0.0)" тут не канает.

#12
1:14, 15 авг. 2017

FordPerfect
> Вот этот код
> http://rextester.com/VGYK15607
> выдаёт
А вот это уже похоже на правду.

#13
1:31, 15 авг. 2017

MrShoor
Да, похоже. Вот из статьи:
Изображение

Это NetPBM, кстати.

#14
1:51, 15 авг. 2017

FordPerfect
> выдаёт
Нафига ты в коде оставил привидение к диапазону [0, 1]?
У тебя обрезается вывод отрицательных значений и добавление серого смысла не имеет.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.