Gradient wg algorytmu Richardsona
Przy okazji rysowania trójkąta Maxwella w rozdziale "Mieszanie koloru" stosowaliśmy metodę tworzenia koloru new Color(r , g, b). gdzie liczby r,g,b są typu float z przedziału <0,1>.
Otóż jednym z modeli ptrzestrzeni RGB jest sześcian RGB o krawędzi 1 i pewnie dlatego w Javie mamy taką formę (inne języki ograniczają się do formy RGB(255,255,255)).
Zobacz przykład interpretacji .
Swego czasu znalazłem ciekawy wykład na ten temat i algorytmu Richardsona.
Autorem jest Andrzej Baran z UMCS Lublin
Color Jaki_kolor(pkt2d w) { float r,g,b; float xy, sq, iq, eta, q1, q2, q3; float half = 0.5f; Color color; xy =(float) (w.x*w.x+w.y*w.y); sq = (float)Math.sqrt(xy); iq = 1f/(xy+1f); eta = (float)(xy-1<=0?-1D:1D); q1 = half+eta*(half-sq*iq); q2 = (float)(iq/Math.sqrt(6)); q3 = (float)(iq/Math.sqrt(2)); r = (float)(q1 + 2*w.x*q2); g = (float)(q1 - w.x*q2 + w.y*q3); b = (float)(q1 - w.x*q2 - w.y*q3); color = new Color(r, g, b); return color; } |