Diyelim ki, sabit bir arka plana sahip olduğunuzdan, topların rengi hala rastgele olabilir ama yine de arka planı tamamlayan belli aralıklara düşmeleri gerekir.
Temelleri. Bunu yapmadan önce temellerini bilmek gerekir. Aşağıdaki renkleri göz önünde bulundurun:
Black #000000 rgb(0,0,0)
Red #FF0000 rgb(255,0,0)
Green #00FF00 rgb(0,255,0)
Blue #0000FF rgb(0,0,255)
Yellow #FFFF00 rgb(255,255,0)
Cyan #00FFFF rgb(0,255,255)
Pink #FF00FF rgb(255,0,255)
Gray #C0C0C0 rgb(192,192,192)
White #FFFFFF rgb(255,255,255)
Renklerin Karışımı RGB [(0..255), (0..255), (0..255)] yukarıdaki gibi yeni renkler oluşturur.
Negatif Renklerin Hesaplanması Negatif renklerin hesaplanması tıpkı siyanede kırmızı, morda yeşil, sarıda mavi dönüşümü gibidir.
Red #FF0000 rgb(255,0,0) -> Cyan #00FFFF rgb(0,255,255)
Green #00FF00 rgb(0,255,0) -> Purple #FF00FF rgb(255,0,255)
Blue #0000FF rgb(0,0,255) -> Yellow #FFFF00 rgb(255,255,0)
Tamamlayıcı renk
Bilgisayardaki tamamlayıcı renkler referansına göre: http://serennu.com/colour/rgbtohsl.php
HSL hakkında
HSL, renkleri Ton, Doygunluk ve Açıklık cinsinden ifade eder ve rengin bu üç özelliği için bir sayı verir.
Renk tonu, rengin 360 ° 'yi temsil eden renk tekerleğindeki 0 ° ile 359 ° derece arasında ifade edilen pozisyonudur; 0 ° kırmızı, 180 ° kırmızı zıt renk camgöbeği vb.
Doygunluk, rengin yoğunluğu, ne kadar mat veya parlak olduğu. Doygunluk azaldıkça, dolgu rengi (daha gri) renk görünür. Bu yüzde olarak ifade edilir,% 100 doygunluk, en parlak ve% 0 doygunluk yok, gri.
Hafiflik, rengin ne kadar hafif olduğu. Doygunluktan biraz farklı. Renk ne kadar beyaz olursa Açıklık değeri o kadar yüksek, açıklık o kadar siyah olur. Böylece% 100 Hafiflik rengi beyaza çevirir,% 0 Hafiflik rengi siyaha çevirir ve "saf" renk% 50 Hafiflik olur.
Doygunluk ve Hafiflik arasındaki farkı görmek açıklamaktan daha kolaydır. Netleştirmek istiyorsanız, renk hesaplayıcı sayfasındaki Açıklık ve Doygunluk çeşitlemelerini görüntülemeyi deneyin, başlangıç renginiz olarak oldukça parlak bir renk seçin.
HSL notasyonu şöyle görünür, Hue, Saturation ve Lightness değerlerini bu sıraya göre verir: t
Kırmızı: 0 ° 100% 50% Soluk pembe: 0 ° 100%% 90 Mavi: 180 ° 100% 50% İşte Adımlar:
Renginizi HSL'ye dönüştürün.
Ton değerini, karşısındaki Ton ile değiştirin (örneğin, Tonunuz 50 ° ise, bunun tersi tekerlek üzerinde 230 ° olacaktır - yaklaşık 180 ° daha ileride).
Doygunluk ve Hafiflik değerlerini olduğu gibi bırakın.
Bu yeni HSL değerini tekrar orijinal renk notasyonunuza (RGB veya her neyse) dönüştürün.
EasyRGB.com gibi siteler sizin için RGB'den HSL'ye veya bunun tersi yönde genel dönüşüm yapabilir.
PHP'ye referans olarak yapılan programlama örneği
RGB’den HSL’ye dönüşüm
Mavi # 0000FF rgb (0,0,255) üstündeki değer Kırmızı Onaltılık 00 + Yeşil Onaltılık 00 + Mavi Onaltılık FF olarak sunulabilir
$redhex = substr($hexcode,0,2);
$greenhex = substr($hexcode,2,2);
$bluehex = substr($hexcode,4,2);
Ayrıca Kırmızı Ondalık 0 + Yeşil Ondalık 0 + Mavi Ondalık 255 olarak da sunulabilir.
$var_r = (hexdec($redhex)) / 255;
$var_g = (hexdec($greenhex)) / 255;
$var_b = (hexdec($bluehex)) / 255;
Şimdi bu değerleri rgb2hsl yordamına takın. Aşağıda, bu dönüşüm için EasyRGB.com’un genel kodunun PHP versiyonu:
Girdi $ var_r, $ var_g ve yukarıdan $ var_b. Çıktı HSL'nin $ h, $ s ve $ l ile eşdeğeridir - bunlar yine girdi değerleri gibi 1'in kesirleri olarak ifade edilir.
$var_min = min($var_r,$var_g,$var_b);ttt
$var_max = max($var_r,$var_g,$var_b);
$del_max = $var_max - $var_min;
$l = ($var_max + $var_min) / 2;
if ($del_max == 0)
{
$h = 0;
$s = 0;
}
else
{
if ($l < 0.5)
{
$s = $del_max / ($var_max + $var_min);
}
else
{
$s = $del_max / (2 - $var_max - $var_min);
};
$del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max;
$del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max;
$del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max;
if ($var_r == $var_max)
{
$h = $del_b - $del_g;
}
elseif ($var_g == $var_max)
{
$h = (1 / 3) + $del_r - $del_b;
}
elseif ($var_b == $var_max)
{
$h = (2 / 3) + $del_g - $del_r;
};
if ($h < 0)
{
$h += 1;
};
if ($h > 1)
{
$h -= 1;
};
};
Şimdi bir hsl değeri olarak renge sahibiz, $ h, $ s ve $ l değişkenlerinde. Bu üç çıktı değişkeni, derece ve yüzde olarak değil, yine bu aşamada 1'in kesirleri olarak tutulur. Örneğin, camgöbeği (180 °% 100% 50), $ h = 0.5, $ s = 1 ve $ l = 0.5 olarak ortaya çıkacaktır.
Daha sonra karşıt Ton'un değerini, yani 180 ° veya 0,5 uzakta olanı bulun (matematikçilerin bunu daha zarif bir şekilde ifade etmenin bir yolu olduğuna eminim ama):
Karşıt tonu hesapla, $ h2
$h2 = $h + 0.5;
if ($h2 > 1)
{
$h2 -= 1;
};
Tamamlayıcı rengin HSL değeri şimdi $ h2, $ s, $ l cinsindendir. Bu yüzden bunu tekrar RGB'ye dönüştürmeye hazırız (yine, EasyRGB.com formülünün PHP sürümüm). Giriş ve çıkış biçimlerinin bu sefer farklı olduğuna dikkat edin, yorumlarımın kodun üst kısmına bakın:
Giriş, tamamlayıcı rengin HSL değeridir, $ h2, $ s, $ l değerinde 1 l'lik kesirler olarak tutulur. Çıktı normal RGB 255 255 255 biçiminde, $ r, $ g değerinde tutulur, $ b Hue, gösterilen hue_2_rgb işlevi kullanılarak dönüştürülür bu kodun sonunda
if ($s == 0)
{
$r = $l * 255;
$g = $l * 255;
$b = $l * 255;
}
else
{
if ($l < 0.5)
{
$var_2 = $l * (1 + $s);
}
elset
{
$var_2 = ($l + $s) - ($s * $l);
};
$var_1 = 2 * $l - $var_2;
$r = 255 * hue_2_rgb($var_1,$var_2,$h2 + (1 / 3));
$g = 255 * hue_2_rgb($var_1,$var_2,$h2);
$b = 255 * hue_2_rgb($var_1,$var_2,$h2 - (1 / 3));
};
// Function to convert hue to RGB, called from above
function hue_2_rgb($v1,$v2,$vh)
{
if ($vh < 0)
{
$vh += 1;
};
if ($vh > 1)
{
$vh -= 1;
};
if ((6 * $vh) < 1)
{
return ($v1 + ($v2 - $v1) * 6 * $vh);
};
if ((2 * $vh) < 1)
{
return ($v2);
};
if ((3 * $vh) < 2)
{
return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6));
};
return ($v1);
};
Ve bu rutinden sonra, 255 255 255 (RGB) biçiminde nihayet $ r, $ g ve $ b değerine sahibiz;
$rhex = sprintf("%02X",round($r));
$ghex = sprintf("%02X",round($g));
$bhex = sprintf("%02X",round($b));
$rgbhex = $rhex.$ghex.$bhex;
$ rgbhex bizim cevabımız - hex'deki tamamlayıcı renk.
Renkli arka planınız mavi veya 0,0255 olduğundan HSL
Ton (H): 240 derece / Doygunluk (S):% 100 / Hafiflik (L):% 4,9
240'ın karşısı bir dairede 60'tır, daha sonra geri RGB'ye dönüştürür # 181800