Atraktor Clifforda
Łukasz Nawrot
Rezultat
Przedstawiony applet obrazuje atraktor Clifforda.
Zadanie
Zadaniem jest narysowanie atraktora Clifforda.
Dane
Dane mamy stałe a, b, c, d oraz wzór wyznaczający współrzędne poszczególnych punktów, z których składa się atraktor. Stałe są wyznacznikami wyglądu atraktora.
Wzory
Najważniejszym wzorem, który wykorzystamy do stworzenia atraktora, jest ten definiujący figurę. Za pomocą niego możemy wyznaczyć współrzędne punktu P(x, y), przy znanych a, b, c, d. Wzór na współrzędną x:
oraz na współrzędną y:
Kod
Atraktor przedstawiamy wykorzystując kontekst, a więc także bibliotekę Runnable. Poniżej przedstawiam procedurę rysującą atraktor:
void rysuj(Graphics g) { double pom_x; double pom_y; g.setColor(Color.black); lo28.punkt(g, p); for(int i = 0; i < 25000; i++) { pom_x = p.x; pom_y = p.y; p.x = Math.sin(a*pom_y) + c*Math.cos(a*pom_x); p.y = Math.sin(b*pom_y) + d*Math.cos(b*pom_y); pkt2d np = new pkt2d(p.x, p.y); lo28.punkt(g, np); } }
Procedura głowna ma postać:
public void paint(Graphics g) { rysuj(kontekst); g.drawImage(strona, 0, 0, this); }