分形1号_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 分形1号

分形1号

 2013/12/1 15:26:01  sxyplibo  程序员俱乐部  我要评论(0)
  • 摘要:说一说分形。大概分形是新手阶段最能简单直接的体现数学之美、编程之美的一个话题了,据说,它描述了大自然。百度一下分形图片,各种不可思议而又美轮美奂的图就会闪现出来,数目庞大,种类繁多,结构复杂。看起来确实很复杂。但是实际却很简单。一个数学公式的简单循环递归,就可以勾勒出一幅美丽的画卷。分形的著名实例:用“镂空”办法制成的康托三分集虚线、谢尔宾斯基三角形垫子(WaclawSierpinski,1882-1969,波兰数学家)及门格尔奶酪或称门格尔海绵(Menger,1902-1985
  • 标签:

?????? 说一说分形。

?????? 大概分形是新手阶段最能简单直接的体现数学之美、编程之美的一个话题了,据说,它描述了大自然。

?????? 百度一下分形图片,各种不可思议而又美轮美奂的图就会闪现出来,数目庞大,种类繁多,结构复杂。

?????? 看起来确实很复杂。但是实际却很简单。一个数学公式的简单循环递归,就可以勾勒出一幅美丽的画卷。

???????分形的著名实例:用“镂空”办法制成的康托三分集虚线、谢尔宾斯基三角形垫子(Waclaw Sierpinski,1882-1969,波兰数学家)及门格尔奶酪或称门格尔海绵(Menger,1902-1985,为著名经济学家门格尔之子),它们的非整数维数是渐增的,分别为0.63、1.58、2.72,而它们长度、面积、体积令人吃惊的皆为0;另一个用“凸起”办法制作的科赫雪花曲线(H.von Koch,1870-1924,瑞典数学家),其维数是1.26,它的长度则是无限的,可它围住的面积却有限!(来自百度百科~)

?????? 上边的姑且不谈,我们从基础开始,这也是我对自己的总结,和温习。(今天都是全码,可以直接运行,大家执行着玩)

?

1、先做一个手镯。

?????

class="java" name="code">import java.awt.Graphics;

import javax.swing.JFrame;
public class shape extends JFrame {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		shape a=new shape();
		a.draw();
	}
	public void draw(){
		this.setTitle("手镯");
		this.setSize(1200, 700);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	public void paint(Graphics g){
		//调用父类的重绘方法
		super.paint(g);
		double x=0,y=0,x0=0;
		double a=1.40,b=1.56,c=1.40,d=-6.56;
		for(int i = 0;i<70000;i++){
			x0=x;
			
			x=d*Math.sin(a*x)-Math.sin(b*y);
			y=c*Math.cos(a*x0)+Math.cos(b*y);
			int ix=(int)(x*30);
			int iy=(int)(y*30);
			
			g.drawLine(ix+300,iy+300,ix+300,iy+300);
		}
	}
}

		

?

?

?????? 用x,y记录坐标,画点,一群点按照数学函数x=d*Math.sin(a*x)-Math.sin(b*y);y=c*Math.cos(a*x0)+Math.cos(b*y);练成线(循环),然后就画了出来。

2、现在是一条变色的线

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
public class shape3 extends JFrame {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		shape3 a=new shape3();
		a.draw();
	}
	public void draw(){
		this.setTitle("简单画板");
		this.setSize(1200, 700);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);		
	}
	public void paint(Graphics g){
		//调用父类的重绘方法
		super.paint(g);		
		for(int i=0;i<255;i++){			
			Color color=new Color(i%255,i%255,255);
			g.setColor(color);
			g.drawLine((int)i*3+200,(int)300,(int)i*3+300,(int)300);					
		}		
	}
}

?

?

?3、稍微升级一下

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;



public class shape2 extends JFrame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		shape2 a=new shape2();
		a.draw();
	}
	public void draw(){
		this.setTitle("简单画板");
		this.setSize(1200, 700);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	
		
	}
	public void paint(Graphics g){
		//调用父类的重绘方法
		super.paint(g);
		
		for(int i=0;i<=700;i++){
			for(int j=0;j<=200;j++){
			 Color color=new Color(j%255,j%255,255);
			g.setColor(color);
			g.drawLine((int)i+200,(int)j+300,(int)i+300,(int)j+300);
		//长方形渐变
			}
		}
		
	}
}

		

?4、一个变色的通道,不过没有设置停止和线程,所以要等很久才能关掉,或者强关

?

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
public class shape1 extends JFrame {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		shape1 a=new shape1();
		a.draw();
	}
	public void draw(){
		this.setTitle("简单画板");
		this.setSize(1200, 700);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);		
	}
	public void paint(Graphics g){
		//调用父类的重绘方法
		super.paint(g);
		double x=0,y=0,x0=0;
		double a=-2,b=-2,c=-1.2,d=2;

		for(int aa = 0;aa<55;aa++){
			for(int bb = 20;bb<255;bb++){
				for(int cc = 1;cc<55;cc++){
				
						
						x0=x;
						x=Math.sin(a*y)-Math.cos(b*x);
						y=Math.sin(c*x0)-Math.cos(d*y);
						
						int ix=(int)(x*100);
						int iy=(int)(y*100);
						Color color=new Color(aa,bb,cc);
						g.setColor(color);
						g.drawLine(ix+300,iy+300,ix+300,iy+300);

				}
			}
		}
		for(int aa = 178;aa<255;aa++){
			for(int bb = 40;bb<90;bb++){
				for(int cc = 89;cc<255;cc++){
					
						
						x0=x;
						x=Math.sin(a*y)-Math.cos(b*x);
						y=Math.sin(c*x0)-Math.cos(d*y);		 
			
						int ix=(int)(x*100);
						int iy=(int)(y*100);
						Color color=new Color(aa,bb,cc);
						g.setColor(color);
						g.drawLine(ix+300,iy+300,ix+300,iy+300);
					
				}
			}
		}
	}
}

		

?

?

5、孔雀开屏

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class beatuful extends JFrame {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		beatuful a=new beatuful();
		a.draw();
	}
	public void draw(){
		this.setTitle("简单画板");
		this.setSize(1200, 700);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	
		
	}
	public void paint(Graphics g){
		//调用父类的重绘方法
		super.paint(g);
		double x=0,y=0;
		double e=2.718,r;
		
		for(int i=0;i<=200000;i++){
			r=(Math.pow(e , Math.sin(i))+2*Math.cos(i)+Math.pow(Math.sin(49*i) , 4));
			 x=r*Math.cos(i);
			y=r*Math.sin(i);
			Color color=new Color(i%255,i%255,255);
			g.setColor(color);
			g.drawLine((int)(x*100)+300,(int)(y*100)+300,(int)(x*100)+300,(int)(y*100)+300);
					
			}
		}
		
	}
}

		

?

?

  • 相关文章
发表评论
用户名: 匿名