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));
}