Wykres nierówności
Najpierw tworzymy funkcję F(x,y) np :
double f(lo28.pkt p)
{
return(Math.sin(p.x-p.y));
}
|
Potem oczywiście kolorowanie dywanu.
Najprostsza wersja to np taka:
Color JakiKolor(pkt2d w)
{
if(f(w)>0) return (Color.red);
else
return(Color.blue);
}
|
Z punktu widzenia matematyki - OK.
Postaram się trochę ulepszyć wygląd wykresu - pokażę efekt
3D.
Pomysł nie jest zbyt orginalny, ale czas pokazać w praktyce zastosowanie programowania gradientu.
Pomysł jest taki: funkcja F(x,y) będzie "gradialnie dodatnia" i "gradialnie ujemna".
"Dodatniość" i "ujemność" wyrazimy przy pomocy 20 czerwieni i 20 błękitów :
Color pal_r[]=new Color[20];
Color pal_b[]=new Color[20];
...........................
...........................
void paleta()
{
for(int i=0;i<20;i++)
{
pal_r[i]=new Color(145+5*i,i,i);
pal_b[i]=new Color(i,i,255-5*i);
}
}
|
Wykorzystujemy pasmo długości 100 dla R i B, uzyskując dwa 20-poziomowe gradienty. Funkcja koloryzująca przyjmie teraz postać:
Color JakiKolor(pkt2d w)
{
int nr;
double y=f(w);
nr=(int)(Math.abs(y)/0.05);
if(y>0)
if(nr<20) return(pal_r[nr]);
else return(Color.red);
else
if(nr<20) return(pal_b[nr]);else return(pal_b[19]);
}
|