Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Kita Boleh Memodelkan Pencampuran Warna Cat Dengan Tepat Menggunakan Algoritma?

Bagaimanakah Kita Boleh Memodelkan Pencampuran Warna Cat Dengan Tepat Menggunakan Algoritma?

Mary-Kate Olsen
Lepaskan: 2024-11-29 15:41:11
asal
636 orang telah melayarinya

How Can We Accurately Model Paint Color Mixing Using an Algorithm?

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

  • Penyerapan Cat: Cat menyerap panjang gelombang cahaya tertentu, menghasilkan warna yang boleh dilihat. Contohnya, cat biru menyerap panjang gelombang merah dan hijau, hanya memantulkan cahaya biru.
  • Campuran Warna Digital: Paparan digital memancarkan cahaya untuk mencipta warna. Apabila mencampurkan dua warna digital, warna yang terhasil ialah gabungan panjang gelombang yang dipancarkan.

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.))
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan