JAVA -- 思瑞平斯基三角

来源:互联网 发布:企业如何在淘宝开店 编辑:程序博客网 时间:2024/05/22 06:45


递归画三角形 ---  先画该三角,然后求三条边的中点,递归画三个小三角形。

运行结果:



代码:

package shiyan6;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;import javax.swing.JPanel;public class Triangle extends JPanel{private int n=0;public void run(){n++;repaint();}protected void paintComponent(Graphics g){g.setColor(Color.red);super.paintComponent(g);Point p1 = new Point(50,500);Point p2 = new Point(550,500);Point p3 = new Point(300,67);display(g,n,p1,p2,p3);}private void display(Graphics g,int n,Point p1,Point p2,Point p3){if (n>0){g.drawLine(p1.x, p1.y, p2.x, p2.y);g.drawLine(p1.x, p1.y, p3.x, p3.y);g.drawLine(p3.x, p3.y, p2.x, p2.y);Point p4 = getmid(p1,p2);Point p5 = getmid(p1,p3);Point p6 = getmid(p2,p3);display(g,n-1,p1,p4,p5);display(g,n-1,p2,p4,p6);display(g,n-1,p3,p6,p5);}}private Point getmid(Point p1,Point p2){Point p = new Point();p.x=(p1.x+p2.x)/2;p.y=(p1.y+p2.y)/2;return p;}}


package shiyan6;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class abcd extends JFrame{private Triangle T = new Triangle();private JButton jb = new JButton("Increase");public abcd(){this.add(T);JPanel panel=new JPanel();panel.add(jb);this.add(panel,BorderLayout.SOUTH);jb.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){T.run();}});}public static void main(String[] args) {abcd f = new abcd();f.setTitle("思瑞平斯基三角");f.setSize(600,600);f.setLocationRelativeTo(null);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}}