![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Взоможно ли в delphi вместо кодировки RGB использовать RYB(red yellow blue), если да, то как это делается? 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Что Вы подразумеваете под словом "использовать"? и чем не устраивает RGB? 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 RGB - это 3 основных цвета, потому что с помощью именно них ты можешь создать ЛЮБОЙ цвет, хоть желтый, хоть черный... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 RYB CMYK знаком диалог выбора цвета: ![]() Последний раз редактировалось NumLock, 15.10.2010 в 15:17.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Я ж не сказал, что RYB нету, я сказал, что красный, зеленый, синий - это 3 основных цвета, и с помощью них можно получить любой другой цвет. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 точно так же можно утверждать, что основных цвета 4: Cyan, Magenta, Yellow, Black. из которых можно сделать красный, синий, зеленый (см. ссылки). просто большинству привычней смешивать красный, синий, зеленый для получения остальных цветов. вообщем все это не по теме... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Не по теме, но все же, из ссылки: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	RYB — цветовая модель субтрактивного синтеза, основанная на составлении цвета из красного (англ. Red), жёлтого (англ. Yellow) и голубого (англ. Blue). Эта сложившаяся исторически система предшествовала становлению современной науки о цвете. Она не вписывается в современные представления о пиках восприятия спектра видимого света в трехстимульной модели зрения, однако все еще применяется для представления цвета в изобразительном искусстве. А в веб дизайне, программировании используют rgb, вот и все...  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Цитата: 
	
 Код: 
	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;  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	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;З.Ы. модель субстрактивная, а не аддитивная, как RGB Последний раз редактировалось KOOL, 15.10.2010 в 19:27.  | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Большое спасибо Kool! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Ты мне помог. Объясняю, почему мне приспичила такая кодировка. Неспроста в изобразительном искусстве цвета описывают через красный, жёлтый и синий. Ведь именно эти три цвета воспринимает сетчатка глаза у человека, и посредством их смешения в человеческом восприятии формируются остальные цвета. Из этих умозаключений следует, что RGB не является адекватной по отношению к человеческому восприятию (хотя, может быть, она удобнее в программировании). Поэтому я решил, что для программирования тоновой коррекции, удобной для человеческого восприятия, следовало бы использовать RYB.  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вот бы ещё разобраться, как эта функция работает, и сделать обратное преобразование... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Я видел еще исходник, там и прямое и обратное преобразования, но он на пайтоне и на вход и выход подается оттенок (Hue), а не отдельные компоненты цвета. Если нужно вот исходник, там не сложно портировать http://code.google.com/p/grapefruit/.../grapefruit.py (1070 строка) 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Поизучал код. Используется трёхмерная интерполяция. Нашёл грубую ошибку. Исправил. Стало лучше. Но, увы, не идеал, не выдаёт cian. Ищу в инете способ интерполяции с учётом значений не только на углах куба, но и на дополнительных точках на рёбрах. Если получится, будет здорово. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#14  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 В любом случае полный спектр в RYB не получить. Такой же проблемой обладает и CMYK, который довольно похож на RYB 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#15  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 RYB- RED YELLOW BLUE, RED=Magenta+Yellow, BLUE=Cyan+Magenta 
		
	
		
		
		
		
		
	
		
		
	
	
	вывод таков, что у вас не получится полноцветной картинки при такой модели. Пурпурного цвета будет в избытке. Нужен CMY. Черный цвет получится при смешивани: K=C+M+Y. Просто для полиграфии для черного сделали отдельную буковку, чтобы при печати текста и контуров не смешивать каждый раз три цвета. Т.к. полноцветная печать сложный технологический процесс. Художнику или полиграфисту, да и любому человеку CMYK более понятен, потому что действует тот же принцип что и при рисовании акварелью (C0M50Y100K0 - ораньжевый, несложно догадаться). А услышав R50G70B120 человеку далекому от компьютеной графики очень сложно в уме представить как будет выглядеть цвет.  |