Операторы для ARGB25.09.2025, 21:15. Показов 8545. Ответов 64
Метки нет (Все метки)
Добрый день
Спасибо
0
|
|||||||||||
| 25.09.2025, 21:15 | |
|
Ответы с готовыми решениями:
64
JPEG -> ARGB -> DXT5
|
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
|||
| 26.10.2025, 17:20 | |||
|
Не по теме:
При аддитивном смешивание красного, зеленого и синего должен получиться белый цвет. Вот иди в магазин, купи красок этих трех цветов и смешивай их в своих ведрах. Ты думаешь, что получишь краску белого цвета? А ведь именно белый цвет должен получиться при аддитивном смешивании красного, зеленого и синего цветов. При смешивании красок этих трех цветов в реальности ты получишь нечто близкое к черному. Именно то, что описывается субтрактивными цветовыми моделями. Если это просто смешивание, то значит нужно вычислить среднее арифметическое (0.8, 0.75, 0.0, 0.0). Это если представлять прозрачность как "воду" и если сама "краска" не содержит воды. Пишу вашими терминами: "краска", "вода"... Если это наложение, то тут уже имеет значение какой цвет сверху / снизу. Например, если c1 сверху, то получится (1.0, 0.5, 0.0, 0.0) - то есть с1 и это логично, ведь непрозрачный с1 полностью перекроет с2. Если с2 сверху, то тут получится новый цвет, а именно (1.0, 0.8, 0.0, 0.0) согласно Photoshop, (1.0, 0.847, 0.0, 0.0) согласно GIMP. Как понимаю, существуют разные формулы для альфа-композитинга.
1
|
|||
| 26.10.2025, 22:06 [ТС] | |||
|
c1 = (1.0, 1.0, 0, 0); // red c2 = (1.0, 0, 1.0, 0); // green c3 = (1.0, 0, 0, 1.0); // blue result = (c1 + c2 + c3) / 3; Сумма = (3.0, 1.0, 1.0, 1.0), но это совсем не белый цвет. Это кол-во чистой краски (alpha = 3.0) и кол-во каждой RGB компоненты в трех литрах смеси в ведре. Делим на 3, смысл операции - просто разливаем содержимое ведра в 3 литровых бутылки. Итого в литре смеси result = (1.0, 0.333, 0.333, 0.333) Вполне себе "нечто близкое к черному". Как видите, смешивание и аддитивность - разные вещи. А как уверенно Вы утверждали! ("иди.. купи.. ты думаешь" и.т.д.) . В общем, "ничто не обходится так дешево.." (дальше знаете)Не по теме: Хотя субтрактивная - тоже интересная вещь. Напр у нормальных людей 3 альфа канала (а не один). Но здесь речь не о ней
0
|
|||
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
||
| 26.10.2025, 23:21 | ||
c2 = (1, 1, 1, 0) желтый result = (c1+ c2) / 2 = (2, 1, 1, 1) / 2 result = (1, 0.5, 0.5, 0.5) получаем серый цвет, тогда как при смешивании красок должен получиться зелёный (как это в субтрактивном смешивании). Твоя формула не работает. Садись, двойка! Я тебе ещё раз повторяю. Иди купи красок трех цветов в магазине и смешивай в ведрах, - ты поймёшь, что аддитивная цветовая модель RGB не подходит. Именно по этой причине струйные принтеры используют CMYK. Чернила там четырех цветов - циан, пурпурный, жёлтый и черный, поскольку это субтрактивная модель. А учитывая это, то и дизайнеры предпочитают CMYK, поскольку не все цвета RGB могут быть представлены в CMYK, а следовательно распечатаны на принтере. Им нужно же, чтобы на бумаге было так же, как и на мониторе. А художники используют другую субтрактивную модель RYB.
0
|
||
|
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
|
|
| 27.10.2025, 06:40 | |
|
Royal_X, вы совершенно правы. Вот поэтотому в колориметрии нет такого понятия как "прозрачность", как четвертый компонент. И нормальное человеческое зрение трихроматично, а не тетрахроматично. Вот что такое физически чистый спектральный красный цвет с прозрачностью 0 и с прозрачнрстью 1? Даже если смешать 50% черного и 50% белого не факт что это отобразиться на экране правильно (гамма коррекция). Кстати, если кому-то интересно, то я снимал спектры цветных стекол и в зависимости от концентрации красителя. Цветовой тон может сильно меняться и это нормально. Грубо говоря так: тонкий слой стекла - зеленый, а толстый - темно красный. Линии красок на диаграмме CIE - кривые, и это надо понимать..
0
|
|
|
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
|
|
| 27.10.2025, 06:48 | |
|
Вот пример такого стекла. Концентрация красителя - однородная.
0
|
|
|
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
|
|
| 27.10.2025, 07:37 | |
|
А это как меняется положения точек на диаграмме цветности в зависимости от концетрации красителя. Явно нелинейно.
Кстати, более-менее адекватно виртуально разбавлять краски можно с помощью POV-Ray и дополнения для спектрального рендеринга. https://lilysoft.org/CGI/SR/Spectral%20Render.htm
0
|
|
| 28.10.2025, 00:12 [ТС] | ||
|
И тут Вы начинаете умничать. Мол, RGB - это плохо, субтрактивная модель и все такое. На мой взгляд это ненужное усложнение с проблематичными результатами. Напр, как уже говорилось, красивый зеленый (между желтым и синим) для юзера может быть багом. Ну хорошо, давайте посмотрим какой Вы умный, предъявите свое решение используя ту модель что Вы считаете лучшей. При этом менять задачу и подстраиваться под Вашу умность никто не будет. Как входные данные, так и рез-т должны быть ARGB (байт на канал). Во внутри делайте/используйте что хотите. Не по теме: Думаю что нормального решения не увижу. Все тыкалки - трепло и слабаки. Вот пересказывать ссылочки - то да, а дойдет до дела - сразу сольется, еще и ТС обругает :) Ну ладно, проверим еще раз, буду рад ошибиться
0
|
||
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
|||||||||||||
| 28.10.2025, 01:00 | |||||||||||||
Я писал, что RGB не подходит именно для смешивания красок, ведь, выше речь шла про краски, ведра, литры... *** Если нужно смешивать краски, то нужно брать субтрактивную модель, например, RYB. Входные данные могут быть в RGB. Преобразовывать RGB в RYB и обратно не составит труда, причем, поскольку я в своем приложении это делал, то помню, что есть два подхода: - легкий (используем алгоритм конвертирования с погрешностью, который гарантировано сможет любой цвет RGB конвертировать в RYB) - более точный (не все цвета RGB могут быть конвертированы в RYB. А для конвертирования мы используем трилинейную интерполяцию. Берём 8 трехмерных координат вершин куба цветовой модели из справочника и интерполируем. ) У меня есть даже код для трилинейной интерполяции (для точного конвертирования с учетом охвата цветовой палитры). Писал для Wolfram Mathematica:
В коде выше использовал такие точки (некоторые точки брал из документа выше): Каждая точка - вершина куба - представляет цвет RYB → RGB white (0; 0; 0) → (1; 1; 1) blue (0; 0; 1) → (0,163; 0,373; 0,6) yellow (0; 1; 0) → (1; 1; 0) green (0; 1; 1) → (0; 0,66; 0,2) red (1; 0; 0) → (1; 0; 0) purple (1; 0; 1) → (0,5; 0; 0,5) orange (1; 1; 0) → (1; 0,5; 0) black (1; 1; 1) → (0,2; 0,094; 0) RGB → RYB black (0; 0; 0) → (1; 1; 1) blue (0; 0; 1) → (0; 0; 1) green (0; 1; 0) → (0; 1; 0,483) cyan (0; 1; 1) → (0; 0,053; 0,21) red (1; 0; 0) → (1; 0; 0) magenta (1; 0; 1) → (0,309; 0; 0,469) yellow (1; 1; 0) → (0; 1; 0) white (1; 1; 1) → (0; 0; 0) *** А вот код для упрощенного конвертирования, который я давно писал:
0
|
|||||||||||||
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
||
| 28.10.2025, 15:17 | ||
|
0
|
||
| 29.10.2025, 02:53 [ТС] | ||||||||
|
Не по теме:
Ладно, устал от Вас, закроем вопрос с интерполяцией. Вернемся к нашим ведрам c1 = (1.0, 0.5, 0, 0) c2 = (0.6, 1.0, 0, 0) В ведре 1.6 литра краски и 0.4 литра воды. Разливаем в 2 пузыря по литру. В каждом 0.8 краски и 0.2 воды. Значит альфа просто интерполируется как обычное число (1 + 0.6) / 2 = 0.8. С RGB так не проходит, исходные значения 0.5 и 1.0 имеют разные альфы. Но вот общее кол-во красного (может лучше сказать "видимого красного") в ведре будет равно сумме такого красного в исходных литрах: red1 = 0.5 * 1.0 red2 = 1.0 * 0.6 red1 + red2 = 1.1 В одном литре его будет 1.1 / 2= 0.55, а с учетом 0.2 воды 0.55 / 0.8 = 0.6875. Итоговые формулы c3.a = (c1.a + c2.a) / 2; c3.r = (c1.r * c1.a + c2.r * c2.a) / 2 / c3.a; Алгоритм: альфу считаем как просто среднее, а каждую RGB сначала множим на альфу (premultiply), суммируем, делим пополам (в общем случае на объем смеси) и делим на получившуюся альфу (unmultiply). О чем грамотный человек сообщал давно c3.r = (c1.r * c1.a + c2.r * c2.a) / (с1.a + c2.a); Т.е. это самое обычное взвешивание (по 20 копеек). Правда это для RGB, как для RYB - не знаю, если так же, то в чем тогда ее "субтрактивность"? Также заметим что есть альтернатива операторам - ф-ция с переменным числом аргументов Ну ладно, вот наконец добрались до технической части: нужно реализовать операторы на С++. Как говорил известный герой
0
|
||||||||
| 31.10.2025, 16:03 [ТС] | ||
|
Хорошо, копнем RYB которым тут тыкали в нос. При первом же взгляде на аттач (левый круг) ясно что модель эта чисто учебная и практически единственная цель - переход от желтого к синему через зеленый. Типа "а помните как вы в детстве (с упоением) красками мазюкали? - так вот же оно". Ради этой ностальгии загубили половину цветов. Воспринимать RYB серьезно не следует. Не верится что у художника всего 3 краски, и он отчаянно смешивает остальные. Еще меньше верится что в магазине нет других красок.
Таким образом вся эта песня с RYB - (злобный) оффтоп. Можно попытаться извлечь "рациональное зерно": а не написать ли нам такие операторы что работают (интерполируют) с любой цветовой моделью? Вроде получается, только перегнать вход/выход "на лету". Но есть пакостное исключение: интерполяция hue (нужен wrap).
0
|
||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
||||||||
| 07.11.2025, 19:00 | ||||||||
|
Вот после этого ответа:
0
|
||||||||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|
| 07.11.2025, 21:40 | |
|
0
|
|
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
|
| 07.11.2025, 21:42 | |
|
0
|
|
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
||
| 07.11.2025, 23:01 | ||
|
По планам к четвергу я опять пропаду. Но планирую вернуться хотя бы к конкурсу про "сделай-ёлку" своими руками. Я как-то пытался, но накосячил и запорол всё.
0
|
||
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
|
| 07.11.2025, 23:31 | |
|
Folian, а я не вижу, чтобы конкурс был https://www.cyberforum.ru/contests/. Последний был в 2022 году.
0
|
|
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|||
| 07.11.2025, 23:51 | |||
|
Сможешь организовать его заново? ...я, кстати, нашёл сейчас в кладовках, что хотел тогда отправить. Хош глянуть? Добавлено через 1 минуту
0
|
|||
|
6110 / 2805 / 1038
Регистрация: 01.06.2021
Сообщений: 10,236
|
|||
| 08.11.2025, 00:15 | |||
|
1
|
|||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|||
| 08.11.2025, 00:22 | |||
|
0
|
|||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|
| 08.11.2025, 01:18 | |
|
Royal_X,
шляпа недоделанная
3
|
|
| 08.11.2025, 01:18 | |
|
Помогаю со студенческими работами здесь
60
Операторы принятия решения и операторы цикла. Условные операторы.Операторы цикла
Операторы отношений и логические операторы Поразрядные операторы,операторы сдвига Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|