
Среда программирования:
Eclipse
Статья по теме:
Построить описанный фрактал. Срабатывает при запуске.
Код программы:
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.Toolkit; import javax.swing.JPanel; public class MyPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; static int iter = 6;//количество итераций public static int drawTSQ(Graphics g, Point A, int size, int iter) { //параметры А - координата левого верхнего угла квадрата //size - длина стороны //iter - кол-во итераций //g - экземпляр библиотечного класса, ответственного за отрисовку if(iter==1){//если итерация одна, просто рисуем заполненный прямоугольник g.fillRect(A.x, A.y, size, size); return 0; } int d=size/4; //вспомогательная переменная, четверть длины исходного квадрата Point M[]=new Point[4];//координаты левых верхних углов порожденных квадратов for(int i=0;i<4;i++){ M[i]=new Point(); } M[0].x=A.x-d;//левый верхний квадрат M[0].y=A.y-d; M[1].x=A.x-d;//левый нижний M[1].y=A.y+size-d; M[2].x=A.x+size-d;//правый верхний M[2].y=A.y-d; M[3].x=A.x+size-d;//правый нижний M[3].y=A.y+size-d; for(int i=0;i<4;i++){ drawTSQ(g, M[i], size/2, iter-1);//вызываем рекурсивно для каждого квадрата } g.fillRect(A.x, A.y, size, size);//отрисовываем исходный квадрат return 0; } @Override protected void paintComponent(Graphics g) { // TODO Auto-generated method stub super.paintComponent(g); this.setBackground(Color.YELLOW); g.setColor(Color.BLACK); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension size = kit.getScreenSize(); int h=size.height; int w=size.width; Point A=new Point(w/2-h/4,h/4);//координаты левого верхнего угла исходного квадрата drawTSQ(g, A, h/2-h/10, iter);//вызываем отрисовку фрактала repaint(); } }
Прикрепленный файл | Размер |
---|---|
Larionov_TSquare.zip | 5.72 кб |