<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上述·
相关推荐
- **示例图像**:项目可能包含一些生成的分形景观示例图片,用于展示算法效果。 - **文档**:`.md`或`.rst`格式的文档,解释了代码的工作原理和使用方法。 - **测试**:`.py`文件,包含单元测试,确保代码的正确性。...
分形递归算法是一种在计算机科学中广泛应用的数学方法,特别是在图形生成、图像处理和复杂系统建模等领域...通过阅读和分析代码,你可以加深对递归算法和分形理论的理解,并可能激发你去探索更多的分形几何和算法应用。
**递归分形树源码解析** 分形树是一种基于分形几何理论的图形,它通过重复应用相同或相似的规则...用户可以通过调整多种参数来控制生成的树的形状和外观,这不仅展示了编程艺术,也体现了分形几何在实际应用中的魅力。
在这个实例中,我们将详细介绍如何使用Python 3和Pillow库生成漂亮的分形树图片。 首先,我们需要导入必要的库,包括`math`用于数学计算,`colorsys`用于颜色转换,以及Pillow中的`Image`和`ImageDraw`模块。`Image...
Java图形分形实例源码是基于Java编程语言实现的,用于展示几何图形的分形特性。...通过阅读和调试代码,不仅可以加深对分形的理解,还能提高Java图形编程技能,为将来开发复杂的图形应用打下坚实基础。
标签“图形 图像 图片 源代码”进一步证实了这是一个关于图像处理和显示的项目,且包含源代码,意味着我们可以深入学习和理解分形图形的生成逻辑。 压缩包子文件的文件名称列表中,"drawsamp.exe"很可能是执行程序...
在计算机视觉领域,分形维数是一种用于描述复杂形状或图像结构的重要数学工具。...这个项目对于理解和研究自然界中复杂的自相似结构具有重要的科学价值,同时也展示了OpenCV在处理非传统图像分析任务时的强大能力。
至于压缩包内的“xuehua”文件,可能是包含了MATLAB代码的.m文件,或者是保存有分形雪花图形结果的图片文件。为了进一步理解和使用这些资源,你需要用MATLAB打开并运行代码,或者查看生成的图像,以便直观地观察分形...
标题中的“一些分形图演示”表明这是一份与分形几何相关的软件或代码资源,可能包含用于展示分形图像的程序。分形是数学的一个分支,它研究那些在不同尺度上具有相同结构的形状,如海岸线、云朵、雪花等。在计算机...
描述中同样只提到了"magicwww_分形1.0.zip",没有提供额外的信息,但我们可以推测这个压缩包可能包含了用于生成或展示分形的Delphi应用程序。 标签"Delphi"表明这个项目是使用Delphi编程语言和集成开发环境(IDE)...
在计算机领域,分形艺术和分形屏保成为了展示计算美学的一种方式。"fractals screensaver"是一个开源项目,它提供了多种分形图案的动态展示,可以作为电脑屏幕保护程序,增添桌面的视觉趣味性。 该项目不仅用C++...
这种颜色映射策略可以帮助展示分形的层次感和细节。在这个程序中,可能通过设置不同的颜色阈值,以不同的色彩来区分不同阶段的迭代结果,从而产生丰富的视觉效果。 在实际操作中,用户可能需要调整参数,比如迭代...
6. **渲染与输出**:最后,将生成的树枝图像渲染到画布上,可以保存为图片文件供后续使用或展示。 在易语言中,我们可能需要使用到如`画图`、`线段`、`角度`、`随机数`等命令来实现上述步骤。易语言的图形库提供了...
总的来说,"超级滑行者"是一个集创新、艺术和技术于一体的项目,展示了JavaScript在现代Web开发中的强大能力和无限潜力。通过深入理解分形和万花筒的原理,并运用JavaScript进行实现,开发者可以创造出引人入胜的...
在提供的压缩包文件"julia-set-playground-master"中,很可能包含了一个Xcode Playground项目,该项目展示了如何实际编写Swift代码来实现这一过程。通过研究代码,你可以看到如何将这些理论步骤转化为实际的Swift...
1. **源代码文件**(如JavaScript文件):这些文件包含了实现分形生成和交互逻辑的代码。 2. **HTML文件**:提供用户界面,用于展示分形并接收用户输入。 3. **CSS文件**:定义用户界面的样式和布局。 4. **资源文件...
8. **算法生成**:某些情况下,不规则线条可能是由数学算法生成的,比如分形几何、随机过程等。例如,使用L-systems(卢卡斯系统)可以创建复杂的自相似形状,或者使用Perlin噪声创建有机的、不规则的纹理。 9. **...
在计算机技术日新月异的今天,编程不仅仅局限于逻辑处理和数据运算,它也被用于艺术创作,例如通过代码来绘制图像。"如何用代码画出一幅好看的画" 这一主题,展示了编程语言在视觉艺术领域的独特应用。下面我们就来...
最后,"树枝分形算法"可能是源代码文件,其中包含了实现上述步骤的程序代码,使用易语言编写,这是一种以中文为编程语言的开发工具,便于中国开发者理解和使用。 易语言的树枝分形算法源码学习,可以帮助开发者理解...
总之,`das-fractals` 是一个展示 3D L 系统分形的 Java 应用程序,它结合了数学、艺术和编程,为用户提供了探索和创造美丽分形的平台。通过这个项目,不仅可以体验到分形的奇妙,也能提升 Java 编程和图形界面设计...