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
Mary-Kate Olsenasal
2024-11-29 15:41:11658semak imbas

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.))

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!

Kenyataan:
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