读书人

java兑现分形

发布时间: 2013-07-29 10:30:31 作者: rapoo

java实现分形
package 递归;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;@SuppressWarnings("serial")public class digui extends JFrame{public static void main(String[] args){digui dl = new digui();dl.showUI();}private void showUI() {this.setTitle("递归线段");this.setDefaultCloseOperation(3);this.setSize(600, 600);this.setVisible(true);this.setLayout(new FlowLayout());JButton btn01 = new JButton("康托三分集");this.add(btn01);JButton btn02 = new JButton("谢尔宾斯基三角形");this.add(btn02);btn01.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ draw01(20,100,380,100);}});btn02.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ draw02(27,100,473,100,250,450);}});}public void draw01(int x1,int y1,int x2,int y2){int len=x2-x1;if(len<2)return;//得到窗体的画布对象Graphics g = this.getGraphics();g.drawLine(x1, y1, x2, y2);int x3=x1+len/3;int x4=x2-len/3;int y=y1+20;draw01(x1, y, x3, y);draw01(x4, y, x2, y);}public void draw02(int x1,int y1,int x2,int y2,int x3,int y3){int len=x2-x1;if(len<2)return;//得到窗体的画布对象Graphics g = this.getGraphics();g.drawLine(x1, y1, x2, y2);g.drawLine(x2, y2, x3, y3);g.drawLine(x1, y1, x3, y3);int x4=(x1+x2)/2;int x5=(x2+x3)/2;int x6=(x1+x3)/2;int y4=(y1+y2)/2;int y5=(y2+y3)/2;int y6=(y1+y3)/2;g.drawLine(x4, y4, x5, y5);g.drawLine(x5, y5, x6, y6);g.drawLine(x4, y4, x6, y6);draw02(x1,y1,x4,y4,x6,y6);draw02(x4,y4,x2,y2,x5,y5);draw02(x6,y6,x5,y5,x3,y3);} }

?

?

?

?

读书人网 >编程

热点推荐