Среда программирования:
Eclipse
Статья по теме:
Рисует фрактал на базе слова Фибоначчи.
Код программы:
public class MyPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; static int ITERATIONS = 23;// количество итераций public static void drawFiboWord(Graphics g, int x0, int y0, int a, int n) { //g - переменная графической библиотеки //x0 y0 - исходные координаты //a - длина сегмента в пикселях //n - количество итераций String s; // получаем строку Фибоначчи на n итерации String s1 = "1"; String s2 = "0"; for (int i = 0; i < n - 2; i++) { s = s2 + s1; s1 = s2; s2 = s; } if (n == 1) { s = "1"; } else { s = s2; } //теперь s - наша строка int vx = 0, vy = -1;// начальный вектор (0,-1) то есть вверх int x1 = x0; int y1 = y0; int x2, y2, temp; for (int i = 0; i < s.length(); i++) { x2 = x1 + a * vx; //проводим сегмент длины а в направлении вектора (vx,vy) y2 = y1 + a * vy; g.drawLine(x1, y1, x2, y2); x1 = x2; y1 = y2; if (s.charAt(i) == '0') { if (i % 2 == 0) {// поворот налево матрица поворота - {{0,-1},{1,0}} temp = vx; vx = -1 * vy; vy = temp; } else {// поворот направо матрица поворота - {{0,1},{-1,0}} temp = vx; vx = vy; vy = -1 * temp; } } } } @Override protected void paintComponent(Graphics g) { // TODO Auto-generated method stub super.paintComponent(g); this.setBackground(Color.BLACK); g.setColor(Color.RED); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension size = kit.getScreenSize(); int h = size.height; int w = size.width; int x0 = w / 4; // задаем координаты центра фрактала int y0 = h - h / 4; int d = 1; // задаем изначальную длину drawFiboWord(g, x0, y0, d, ITERATIONS); repaint(); } }
Прикрепленный файл | Размер |
---|---|
FiboWordFractal.zip | 6.34 кб |