JAVA总结——静态科赫曲线
经过几天的分析和计算,终于画出了传说中的科赫曲线(当然只是最初步的静态的曲线)。在这个过程中学到了一些新的东西,总体来说还是挺好玩的。
depth=1
depth=3
depth=7
代码如下:创建了2个类
第一个类:DrawBoard
package source;import java.awt.Graphics;import javax.swing.JFrame;public class DrawBoard extends JFrame{Graphics g;//主函数public static void main(String [] args){DrawBoard db = new DrawBoard();db.createboard();}//创建窗体public void createboard(){this.setTitle("科赫曲线");this.setSize(800, 800);this.setDefaultCloseOperation(3);this.setResizable(false);this.setVisible(true);//创建一个画布对象Graphics g =this.getGraphics();BoardListener lis = new BoardListener(g);this.addMouseListener(lis);}}package source;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;public class BoardListener implements MouseListener{Graphics g;//double x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,k;int depth = 7;public BoardListener(Graphics g1){g=g1;}public void mouseClicked(MouseEvent e) {digui(100,400,600,400,this.depth);}public void mouseEntered(MouseEvent arg0) {}public void mouseExited(MouseEvent arg0) {}public void mousePressed(MouseEvent arg0) {}public void mouseReleased(MouseEvent arg0) {}public void digui(double x1,double y1,double x2,double y2,int depth){if(depth<=1){g.drawLine((int)x1,(int)y1,(int)x2,(int)y2);}else {double x3=(2*x1+x2)/3;double y3=(2*y1+y2)/3;double x4=(x1+2*x2)/3;double y4=(y1+2*y2)/3;double x5=0,y5=0;double k=(y4-y3)/(x4-x3);if(y3==y4){x5=(x3+x4)/2;y5=y3-(x4-x3)*Math.sqrt(3)/2;}else{ if(k<0){x5=x1;y5=y4;}if(k>0){x5=x2;y5=y3;}}digui(x1,y1,x3,y3,depth-1);digui(x3,y3,x5,y5,depth-1);digui(x5,y5,x4,y4,depth-1);digui(x4,y4,x2,y2,depth-1);}}}