|
Oto wzór dla "naszego bohatera":
xn+1 = xn·cos(a) - (yn - xn2)·sin(a)
yn+1 = xn·sin(a) + (yn - xn2)·cos(a)
|
Wybiorę punkt "startowy" i wielokrotnie zastosuję przekształcenie :
P(x,y)=(x·cos(a) -(y-x2)·sin(a) , x·sin(a) -(y-x2)·cos(a))
Procedura rysująca jest równie prosta jak w poprzednich dwu przypadkach.
Wzór sugeruje, że na kształt ma wpływ współczynnik a, zaś praktyka pokazuje, że
pkt2d P(pkt2d p)
{double xp=p.x;
p.x=xp*Math.cos(a)-(p.y-xp*xp)*Math.sin(a);
p.y=xp*Math.sin(a)+(p.y-xp*xp)*Math.cos(a);
return(p);
}
//-------------------------------------------
void klatka(Graphics g)
{
for(int i=0;i<1000;i++)
{
w=P(w);
lo28.punkt(g,lo28.p2d(sk*w.x,sk*w.y));
}
}
|
wybór punktu "starowego" również jest nie bez znaczenia.
Istotnie, punkt startowy wybieramy z obszaru x:<-1 ; 1> oraz y:<-1 ; 1>
Zastosowałem dość duże powiększenie tego obszaru (można zmieniać w zakresie 1-12)
Aplet obok pozwala ci obserwować wygodnie punkty atraktora. Punkt wskazany myszą będzie nowym "punktem startowym". Rysuje się zawsze w kolorze czerwonym (aktualna skala) i dodatkowo na niebiesko (w skali 1:1).
|
Jeśli spokojnie znajdziesz inne niż proponowane wartości atraktor zaprezentuje swoje inne piękne formy.
|