Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.10.2010, 10:36
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию Кодировка цвета

Взоможно ли в delphi вместо кодировки RGB использовать RYB(red yellow blue), если да, то как это делается?
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #2  
Старый 15.10.2010, 12:24
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Что Вы подразумеваете под словом "использовать"? и чем не устраивает RGB?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 15.10.2010, 15:06
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

RGB - это 3 основных цвета, потому что с помощью именно них ты можешь создать ЛЮБОЙ цвет, хоть желтый, хоть черный...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #4  
Старый 15.10.2010, 15:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от v1s2222
RGB - это 3 основных цвета, потому что с помощью именно них ты можешь создать ЛЮБОЙ цвет, хоть желтый, хоть черный...
не совсем точный ответ. т.к.:
RYB
CMYK
знаком диалог выбора цвета:
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 15.10.2010 в 15:17.
Ответить с цитированием
  #5  
Старый 15.10.2010, 15:17
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Я ж не сказал, что RYB нету, я сказал, что красный, зеленый, синий - это 3 основных цвета, и с помощью них можно получить любой другой цвет.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #6  
Старый 15.10.2010, 15:22
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

точно так же можно утверждать, что основных цвета 4: Cyan, Magenta, Yellow, Black. из которых можно сделать красный, синий, зеленый (см. ссылки). просто большинству привычней смешивать красный, синий, зеленый для получения остальных цветов. вообщем все это не по теме...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 15.10.2010, 15:39
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Не по теме, но все же, из ссылки:

RYB — цветовая модель субтрактивного синтеза, основанная на составлении цвета из красного (англ. Red), жёлтого (англ. Yellow) и голубого (англ. Blue). Эта сложившаяся исторически система предшествовала становлению современной науки о цвете. Она не вписывается в современные представления о пиках восприятия спектра видимого света в трехстимульной модели зрения, однако все еще применяется для представления цвета в изобразительном искусстве.
А в веб дизайне, программировании используют rgb, вот и все...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #8  
Старый 15.10.2010, 16:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Klassenas
Взоможно ли в delphi вместо кодировки RGB использовать RYB(red yellow blue), если да, то как это делается?
а CMYK не подойдет? а то "Win 32 SDK Reference":
Цитата:
The CMYK macro creates a CMYK color value by combining the specified cyan, magenta, yellow, and black values.
COLORREF CMYK(
c,
m,
y,
k
);
See Also
GetCValue, GetMValue, GetKValue, GetYValue
Windows.pas:
Код:
function GetKValue(cmyk: COLORREF): Byte;
begin
  Result := Byte(cmyk);
end;

function GetYValue(cmyk: COLORREF): Byte;
begin
  Result := Byte(cmyk shr 8);
end;

function GetMValue(cmyk: COLORREF): Byte;
begin
  Result := Byte(cmyk shr 16);
end;

function GetCValue(cmyk: COLORREF): Byte;
begin
  Result := Byte(cmyk shr 24);
end;

function CMYK(c, m, y, k: Byte): COLORREF;
begin
  Result := (k or (y shl 8) or (m shl 16) or (c shl 24));
end;
имхо, по аналогии можно и для RYB написать...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 15.10.2010, 19:24
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Код:
function RYBToRGB(R, Y, B:byte):TColor;
  function cubicInt(t, A, B:single):single;
  begin
    Result:=A + t*t*(3-2*t)*(B-A);
  end;
var iR, iY, iB, x0, x1, x2, x3, y0, y1 : single;
    rR, rG, rB : byte;
begin
  iR := R/255;
  iY := Y/255;
  iB := B/255;

  x0 := cubicInt(iB, 1.0, 0.163);
  x1 := cubicInt(iB, 1.0, 0.0);
  x2 := cubicInt(iB, 1.0, 0.5);
  x3 := cubicInt(iB, 1.0, 0.2);
  y0 := cubicInt(iY, x0, x1);
  y1 := cubicInt(iY, x2, x3);
  rR := Round(255*cubicInt(iR, y0, y1));

  x0 := cubicInt(iB, 1.0, 0.373);
  x1 := cubicInt(iB, 1.0, 0.66);
  x2 := cubicInt(iB, 0.0, 0.0);
  x3 := cubicInt(iB, 0.5, 0.094);
  y0 := cubicInt(iY, x0, x1);
  y1 := cubicInt(iY, x2, x3);
  rG := Round(255*cubicInt(iR, y0, y1));

  x0 := cubicInt(iB, 1.0, 0.6);
  x1 := cubicInt(iB, 0.0, 0.2);
  x2 := cubicInt(iB, 0.0, 0.5);
  x3 := cubicInt(iB, 0.0, 0.0);
  y0 := cubicInt(iY, x0, x1);
  y1 := cubicInt(iY, x2, x3);
  rB := Round(255*cubicInt(iR, y0, y1));

  Result := (rB shl 16) + (rG shl 8) + rR;
end;
источник: http://threekings.tk/mirror/ryb_TR.pdf
З.Ы. модель субстрактивная, а не аддитивная, как RGB
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت

Последний раз редактировалось KOOL, 15.10.2010 в 19:27.
Ответить с цитированием
  #10  
Старый 15.10.2010, 22:43
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
Хорошо

Большое спасибо Kool!
Ты мне помог.
Объясняю, почему мне приспичила такая кодировка.
Неспроста в изобразительном искусстве цвета описывают через красный, жёлтый и синий. Ведь именно эти три цвета воспринимает сетчатка глаза у человека, и посредством их смешения в человеческом восприятии формируются остальные цвета. Из этих умозаключений следует, что RGB не является адекватной по отношению к человеческому восприятию (хотя, может быть, она удобнее в программировании). Поэтому я решил, что для программирования тоновой коррекции, удобной для человеческого восприятия, следовало бы использовать RYB.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #11  
Старый 15.10.2010, 22:56
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Вот бы ещё разобраться, как эта функция работает, и сделать обратное преобразование...
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #12  
Старый 16.10.2010, 11:34
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Я видел еще исходник, там и прямое и обратное преобразования, но он на пайтоне и на вход и выход подается оттенок (Hue), а не отдельные компоненты цвета. Если нужно вот исходник, там не сложно портировать http://code.google.com/p/grapefruit/.../grapefruit.py (1070 строка)
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #13  
Старый 23.10.2010, 22:38
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Поизучал код. Используется трёхмерная интерполяция. Нашёл грубую ошибку. Исправил. Стало лучше. Но, увы, не идеал, не выдаёт cian. Ищу в инете способ интерполяции с учётом значений не только на углах куба, но и на дополнительных точках на рёбрах. Если получится, будет здорово.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #14  
Старый 25.10.2010, 00:45
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

В любом случае полный спектр в RYB не получить. Такой же проблемой обладает и CMYK, который довольно похож на RYB
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #15  
Старый 25.10.2010, 12:06
Аватар для anDarky
anDarky anDarky вне форума
Прохожий
 
Регистрация: 21.10.2010
Сообщения: 8
Репутация: 10
По умолчанию

RYB- RED YELLOW BLUE, RED=Magenta+Yellow, BLUE=Cyan+Magenta
вывод таков, что у вас не получится полноцветной картинки при такой модели. Пурпурного цвета будет в избытке.
Нужен CMY. Черный цвет получится при смешивани: K=C+M+Y. Просто для полиграфии для черного сделали отдельную буковку, чтобы при печати текста и контуров не смешивать каждый раз три цвета. Т.к. полноцветная печать сложный технологический процесс.
Художнику или полиграфисту, да и любому человеку CMYK более понятен, потому что действует тот же принцип что и при рисовании акварелью (C0M50Y100K0 - ораньжевый, несложно догадаться). А услышав R50G70B120 человеку далекому от компьютеной графики очень сложно в уме представить как будет выглядеть цвет.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter