-
Речь идёт не о смешивании разноцветных световых лучей, а о смешивании именно красок (гуашь, акварель и т.п. :) ) Известно, что если смешать лучи всевозможных цветов, то получится белый, однако если смешать все краски - получится серая (почти чёрная) масса :) Например если смешать жёлтую с синей получится зелёная краска, да ещё в зависимости от пропорции разной интенсивности. Ясно, что алгоритм значительно отличается от алгоритма смешивания цветных лучей, однако я никак не соображу зависимости, да и в интернете найти не удалось...
-
можешь почитать про RGB и CMY
-
Посмотри про CMY (cyan magenta yellow) Суть в том, что при смешении пигментов происходит вычитание цвета, поэтому в идеале смешение всех цветов (вычитание) дает черный. Посмотри как работает струйный принтер.
-
-
Может это поможет: Procedure Perexod(FileName_1, FileName_2 : string); const count = 100; var i: integer; x, y: integer; jp1, jp2 : TJPEGImage; bm, bm1, bm2: TBitMap; p1, p2, p: PByteArray; c: integer; k: integer; begin jp1:=TJPEGImage.Create; jp1.LoadFromFile(FileName_1);
jp2:=TJPEGImage.Create; jp2.LoadFromFile(FileName_2);
bm := TBitMap.Create; bm1 := TBitMap.Create; bm2 := TBitMap.Create;
bm1.Assign(jp1); bm2.Assign(jp2);
if bm1.Height < bm2.Height then begin bm.Height := bm1.Height; bm2.Height := bm1.Height; end else begin bm.Height := bm2.Height; bm1.Height := bm2.Height; end; if bm1.Width < bm2.Width then begin bm.Width := bm1.Width; bm2.Width := bm1.Width; end else begin bm.Width := bm2.Width; bm1.Width := bm2.Width; end; bm.PixelFormat := pf24bit; bm1.PixelFormat := pf24bit; bm2.PixelFormat := pf24bit;
Form1.Canvas.Draw(0, 0, bm1); for i := 1 to count - 1 do begin for y := 0 to bm.Height - 1 do begin p := bm.ScanLine[y]; p1 := bm1.ScanLine[y]; p2 := bm2.ScanLine[y]; for x := 0 to bm.Width * 3 - 1 do p^[x] := round((p1^[x] * (count - i) + p2^[x] * i) / count); end;
Form1.Canvas.Draw(0, 0, bm); Form1.Caption := IntToStr(round(i / count * 100)) + '%'; Application.ProcessMessages; if Application.Terminated then break; end; Form1.Canvas.Draw(0, 0, bm2); Form1.Caption := 'done'; bm1.Destroy; bm2.Destroy; bm.Destroy; jp1.Free; jp2.Free; end;
-
Смешивание цветов световых лучей: среднее по RGB Смешивание цветов светофильтров: сумма (до FFFFFF) по RGB
-
ПРИКОЛЬНО - СПАСИБО
-
-
-
|