Algoritma untuk Mencampur Warna dalam Ruang Warna Cat
Apabila mencampurkan cat fizikal, warna yang terhasil berbeza daripada apa yang dijangkakan apabila mencampurkan warna pada skrin digital. Ini kerana cat bercampur dengan penyerapan, manakala pencampuran warna digital melibatkan pelepasan.
Penyerapan Cat dan Pencampuran Warna Digital
Algoritma untuk Pencampuran Warna dalam Ruang Warna Cat
Mencampurkan warna dalam cat ruang warna melibatkan penolakan panjang gelombang yang diserap daripada cahaya putih (255, 255, 255). Sebagai contoh, mencampurkan cat biru (menyerap merah dan hijau) dengan cat kuning (menyerap biru) akan menghasilkan hijau berlumpur.
Penyelesaian Ganti Menggunakan Ruang Warna HLS
Sebagai alternatif , menggunakan ruang warna HLS (Hue, Lightness, Saturation) boleh memberikan hasil pencampuran warna yang lebih intuitif yang bebas daripada sifat penyerapan fizikal cat.
Kod Python untuk Campuran Warna dalam Ruang Warna HLS
Di bawah ialah fungsi Python yang mengira purata antara dua warna dalam ruang warna HLS:
import math from colorsys import rgb_to_hls, hls_to_rgb def average_colors(rgb1, rgb2): h1, l1, s1 = rgb_to_hls(rgb1[0]/255., rgb1[1]/255., rgb1[2]/255.) h2, l2, s2 = rgb_to_hls(rgb2[0]/255., rgb2[1]/255., rgb2[2]/255.) s = 0.5 * (s1 + s2) l = 0.5 * (l1 + l2) x = cos(2*pi*h1) + cos(2*pi*h2) y = sin(2*pi*h1) + sin(2*pi*h2) if x != 0.0 or y != 0.0: h = atan2(y, x) / (2*pi) else: h = 0.0 s = 0.0 r, g, b = hls_to_rgb(h, l, s) return (int(r*255.), int(g*255.), int(b*255.))
Menggunakan fungsi ini, kita boleh menganggarkan hasil pencampuran cat biru dan kuning, untuk contoh:
>>> average_colors((255, 255, 0), (0, 0, 255)) (0, 255, 111)
Pendekatan ini memberikan hasil pencampuran warna yang lebih intuitif yang tidak dikekang oleh sifat penyerapan cat fizikal.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Memodelkan Pencampuran Warna Cat Dengan Tepat Menggunakan Algoritma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!