Dywan "trygonometryczny"
Ten dywan tworzy funkcja obliczająca składowe:
r=sin(ax-by); g=sin(ax)+sin(by); b=cos(ax+y); |
Poniżej apletu masz jej dokładną implementację.
Zwróć uwagę na formy :
Math.min i Math.max,
które gwarantują, że konstruktor new Color otrzymuje dodatnie liczby float z przedziału<0,1>.
Funkcje trygonometryczne są niezwykle wdzięcznym tworzywem dla dywanów. Nieraz wystarczy zwykłe manipulowanie okresem tych funkcji, tak jak to ma miejsce w naszym przykładzie.
Oczywiście możliwości jest tu sporo..
Na marginesie :
niczego więcej, poza wrażeniem plastycznym, ten dywan nie prezentuje..
w przeciwieństwie do pozostałych.
Color Jaki_kolor(pkt2d w) {float r,g,be; r = Math.max((float)Math.sin(a*w.x-b*p.y),0f); g =Math.min((float)Math.abs(Math.sin(a*w.x)+Math.sin(b*w.y)),1f); be =Math.max((float)Math.cos(a*w.x+w.y),0f); return(new Color(r,g,be)); } |