Среда программирования:
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 = 7;//кол-во итераций public static int drawMCT(Graphics g, Point A, Point B,Point C, int iter) { //в качестве параметров точки А В С и кол-во итераций //g - экземпляр библиотечного класса, ответственного за отрисовку if(iter==0) //если итераций 0, выход return 0; Point D=new Point(); //точка центра масс Point v1 =new Point();//вектор AB Point v2=new Point();//вектор AC v1.x=B.x-A.x; v1.y=B.y-A.y; v2.x=C.x-A.x; v2.y=C.y-A.y; D.x=A.x+(v1.x+v2.x)/3; //к точке А прибавим сумму векторов AВ и AC, деленную на 3 D.y=A.y+(v1.y+v2.y)/3; //и получим координаты центра масс g.drawLine(A.x,A.y,D.x,D.y);//рисуем отрезки от вершин к центру масс g.drawLine(B.x,B.y,D.x,D.y); g.drawLine(C.x,C.y,D.x,D.y); drawMCT(g,A,B,D,iter-1);//вызываем рекурсивно процендуру для полученных drawMCT(g,B,C,D,iter-1);//треугольников, с итерацией, меньшей на 1 drawMCT(g,A,C,D,iter-1); return 0; } @Override protected void paintComponent(Graphics g) { // TODO Auto-generated method stub super.paintComponent(g); this.setBackground(Color.BLACK); g.setColor(Color.GREEN); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension size = kit.getScreenSize();//получим размеры экрана int h=size.height; int w=size.width; Point A=new Point(w*3/4,h*3/4);//выберем начальные точки, чтоб красиво смотрелись Point B=new Point(w/4,h*3/4); Point C=new Point(w/2,h/4); g.drawLine(A.x, A.y, B.x, B.y);//рисуем изначальный треугольник g.drawLine(B.x, B.y, C.x, C.y); g.drawLine(A.x, A.y, C.x, C.y); drawMCT(g, A,B,C, iter);//вызываем отрисовку фрактала repaint(); } }
Прикрепленный файл | Размер |
---|---|
Larionov_MCTriangle.zip | 5.95 кб |