<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
package rzy0705a; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DrawListener implements ActionListener { //谢宾斯基三角形 public void draw(double x11,double y11,double x22,double y22,double x33,double y33,int con) { con--; if(con<1){return;} int x1,x2,x3,y1,y2,y3; x1=(int)x11; x2=(int)x22; x3=(int)x33; y1=(int)y11; y2=(int)y22; y3=(int)y33; g.drawLine(x1,y1,x2,y2); g.drawLine(x2,y2,x3,y3); g.drawLine(x1, y1, x3, y3); double x13=(x11+x33)/2; double x23=(x22+x33)/2; double x12=(x11+x22)/2; double y13=(y11+y33)/2; double y23=(y22+y33)/2; double y12=(y11+y22)/2; draw(x11,y11,x12,y12,x13,y13,con); draw(x12,y12,x22,y22,x23,y23,con); draw(x13,y13,x23,y23,x33,y33,con); } //谢宾斯基地毯 public void drawF(double a,double b,double w,double h,int con){ con--; if(con<1){return;} g.setColor(Color.green); g.fillRect((int)(a+w/9),(int)(b+h/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w*4/9),(int)(b+h/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w*7/9),(int)(b+h/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w/9),(int)(b+h*4/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w*7/9),(int)(b+h*4/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w/9),(int)(b+h*7/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w*4/9),(int)(b+h*7/9),(int)(w/9),(int)(h/9)); g.fillRect((int)(a+w*7/9),(int)(b+h*7/9),(int)(w/9),(int)(h/9)); drawF(a, b, w/3, h/
3,con); drawF(a+w/3, b, w/3, h/3,con); drawF(a+2*w/3, b, w/3, h/3,con); drawF(a, b+h/3, w/3, h/3,con); drawF(a+2*w/3, b+h/3, w/3, h/3,con); drawF(a, b+2*h/3, w/3, h/3,con); drawF(a+w/3, b+2*h/3, w/3, h/3,con); drawF(a+2*w/3, b+2*h/3, w/3, h/3,con); } private Graphics g; public DrawListener(Graphics g){this.g=g;} //重写抽象方法 public void actionPerformed(ActionEvent e) { g.clearRect(0,0,2000,1000); //画分形 if(e.getActionCommand()=="分形1") {int a=-2,b=-2,d=2; double c=-1.2; double x=150,y=150; for(int i=0;i<50000;i++){ double x2=Math.sin(a*y)-Math.cos(b*x); double y2=Math.sin(c*x)-Math.cos(d*y); int f=(int)(x2*100)+250; int h=(int)(y2*120)+300; Color cl=new Color(i%256,0,0); g.setColor(cl); g.drawLine(f,h,f,h); x=x2; y=y2; }}
if(e.getActionCommand()=="分形2"){ //double a=1.40,b=1.56,c=1.40,d=-6.56; double a=1.40,b=1.56,c=4,d=4; double x=0,y=0; for(int i=0;i<100000;i++){ double x2=d*Math.sin(a*x)-Math.sin(b*y); double y2=c*Math.cos(a*x)+Math.cos(b*y); int f=(int)(x2*50)+850; int h=(int)(y2*50)+350; Color cl=new Color(0,i%256,i%256); g.setColor(cl); g.drawLine(f,h,f,h); x=x2; y=y2;} }
if(e.getActionCommand().equals("嵌套矩形")){ for(int i=0;i<35;i++){ if(i>=15&&i<=25){ g.setColor(Color.green); g.drawRect(700-10*i,380-10*i,10+20*i, 10+20*i);} else if(i>25){g.setColor(Color.orange); g.drawRect(700-10*i,380-10*i,10+20*i, 10+20*i);} else{g.setColor(Color.red); g.drawRect(700-10*i,380-10*i,10+20*i, 10+20*i);} } }
if(e.getActionCommand().equals("嵌套圆")){ for(int i=0;i<46;i++){if(i>=15&&i<=25){ g.setColor(Color.green); g.drawOval(700-10*i,380-10*i,10+20*i, 10+20*i);} else if(i<15){g.setColor(Color.red); g.drawOval(700-10*i,380-10*i,10+20*i, 10+20*i);} else if(i>=25&&i<35){g.setColor(Color.blue); g.drawOval(700-10*i,380-10*i,10+20*i, 10+20*i);} else if(i>=35&&i<=45){g.setColor(Color.orange); g.drawOval(700-10*i,380-10*i,10+20*i, 10+20*i);} } }
if(e.getActionCommand().equals("谢宾斯基三角形")){ draw(0,600,600,600,300,600-300*Math.sqrt(3),12); }
if(e.getActionCommand().equals("分形3")){ double x,y,nextx,nexty; x=0;y=0; double a=1,b=4,c=60; for(int i=0;i<1000000;i++){ nextx=y-Math.signum(x)*Math.sqrt(Math.abs(b*x-c)); nexty=a-x; int m=(int)(x*1)+400; int n=(int)(y*1)+400; g.setColor(Color.blue); g.drawLine(m, n, m, n); x=nextx; y=nexty; } }
if(e.getActionCommand().equals("分形4")){ double x,y,nextx,nexty; x=0;y=0; double a=0.4,b=1,c=0; for(int i=0;i<1000000;i++){ nextx=y-Math.signum(x)*Math.sqrt(Math.abs(b*x-c)); nexty=a-x; int m=(int)(x*100)+400; int n=(int)(y*100)+400; g.setColor(Color.blue); g.drawLine(m, n, m, n); x=nextx; y=nexty; } }
if(e.getActionCommand().equals("分形5")){ double x,y,nextx,nexty; x=0;y=0; double a=-1,b=-2,c=-3; for(int i=0;i<1000000;i++){ nextx=y-Math.signum(x)*Math.sqrt(Math.abs(b*x-c)); nexty=a-x; int m=(int)(x*10)+400; int n=(int)(y*10)+400; g.setColor(Color.blue); g.drawLine(m, n, m, n); x=nextx; y=nexty; } }
if(e.getActionCommand().equals("分形6")){ //System.out.println("try"); double x1,y1,nextx1,nexty1; x1=0;y1=0; double a1=-1000,b1=0.1,c1=-10; for(int i=0;i<100000000;i++){ nextx1=y1-Math.signum(x1)*Math.sqrt(Math.abs(b1*x1-c1)); nexty1=a1-x1; int m=(int)(x1*30)+300; int n=(int)(y1*30)+300; g.setColor(Color.blue); g.drawLine(m, n, m, n); x1=nextx1; y1=nexty1; } }
if(e.getActionCommand().equals("谢宾斯基矩形")){ g.setColor(Color.black); g.fillRect(100,100,600,600); g.setColor(Color.green); g.fillRect(300,300,200,200); drawF(100,100,600,600,6); }
}
}
package rzy0705a; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionListener; import java.awt.event.MouseMotionListener; import javax.swing.JButton; import javax.swing.JFrame; //定义类DrawBord,继承自JFrame public class DrawBord extends JFrame{ /** * 入口主函数 */ public static void main(String[] args) { //实例化DrawBord,创建对象 DrawBord db=new DrawBord(); //定义显示方法 db.initUI(); } public Graphics g; public void initUI(){ //设置属性 this.setTitle("分形"); this.setSize(800, 800); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(3); this.setLayout(new FlowLayout()); this.setResizable(true); this.setVisible(true); JButton jb=new JButton("分形1"); this.add(jb); JButton jb1=new JButton("分形2"); this.add(jb1); JButton jb2=new JButton("嵌套矩形"); this.add(jb2); JButton jb4=new JButton("嵌套圆"); this.add(jb4); JButton jb5=new JButton("谢宾斯基三角形"); this.add(jb5); JButton jb6=new JButton("分形3"); this.add(jb6); JButton jb7=new JButton("分形4"); this.add(jb7); JButton jb8=new JButton("分形5"); this.add(jb8); JButton jb9=new JButton("分形6"); this.add(jb9); JButton jb10=new JButton("谢宾斯基矩形"); this.add(jb10); g=this.getGraphics(); //实例化对象 ActionListener al=new DrawListener(g); jb.addActionListener(al); jb1.addActionListener(al); jb2.addActionListener(al); jb4.addActionListener(al); jb5.addActionListener(al); jb6.addActionListener(al); jb7.addActionListener(al); jb8.addActionListener(al); jb9.addActionListener(al); jb10.addActionListener(al); MouseMotionListener m=new MouseListen(g); this.addMouseMotionListener(m); } }
x上述·
相关推荐
matlab代码实现分形维数计算
分形树的生成算法 实现分形树的绘制 有参数输入窗口,通过该窗口输入生成树的各个参数:颜色,大小,旋转角度等等
分形屏保源代码,和大家分享
文献fractal analysis and multifractal spectra for the images 及其代码 文献,基于多重分形频谱分析的图像边缘检测_王耀南及其代码
分形压缩的基本算法,采用的是固定方块分割方案
L系统分形艺术程序代码
Java 分形几何图形源代码实例 Java 分形几何图形源代码实例Java 分形几何图形源代码实例
分形图c pascal 源代码
python代码,可以实现画数学图形中的分形之雪花,很漂亮,很实用
分形几何的matlab代码的一个小栗子。上课的一个作业。
分型图形的matlab画法,经典图形以及入门级的简单图形画法。此例为树形分形图的代码,简洁易懂。
matlab代码实现分形维数计算
分形算法详细教程及代码 很基础!有伪代码!
3D分形山JAVA代码 可以随机生成一个3D山脉 代码才180多行
包括二十多个分形程序,从最简单的科赫曲线到曼代尔波集合.内容参见 分形艺术程序设计>>. (运行程序时,右键点出快捷菜单.先选定图形再作图.看复平面上的分形时, 请将const int STEP=4改为1.) 本程序用CB5编写,在...
分形图像的源代码,而且运行完全正确。还附有可执行的程序。
分形,具有以非整数维形式充填空间的形态特征。本案例是一个分形代码,展现形状为叶子形状
分形及其程序源代码.rar 分形及其程序源代码.rar
Sierpinski海绵分形的VC源代码(分形频道提供)2004
画一棵分形树,其中定义了树枝、树叶和花,使用海龟绘图