在学习了简单画板后,我们用了大量的时间在学习分形,分形是建立在对图形进行数学分析的基础上,用数学思想画出来的,我们接触的较多的就是用数学公式和递归的思想画出来的一些图形。最开始看到胡哥给我们展示的图形时,觉得很惊艳,慢慢接触就明白很多都是套用数学公式画点画出来的。在学习的过程中,我也画了不少图形。
用数学公式画出来的图形:
(一):
(二):
(三):树:
(四):树叶:
用递归的思想画的分形:
(一):谢尔宾斯基三角形:
(二):俗称地毯
下面我把自己贴的图片中树和树叶的代码复制出来。有兴趣的同学可以看一下:
树——
主函数:package cn.netjava.cf0515;
import java.awt.Graphics;
import javax.swing.JFrame;
public class ColorPanel {
public static void main(String[] args) {
ColorPanel cp=new ColorPanel();
cp.unitUI();
}
public void unitUI(){
//构造画板
JFrame jf=new JFrame();
jf.setTitle("画 板");
jf.setSize(988,713);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
Graphics g =jf.getGraphics();
Drawing dr=new Drawing(g);
dr.IfsTree();
}
}
画的方法函数:
package cn.netjava.cf0515;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
public class Drawing {
private Graphics g;
public Drawing(Graphics g){
this.g=g;
}
public void IfsTree(){
//用数组保存七组参数,随机选取a,b,c,d,e,f,g1的第t组数据
double a[]={0.05f,-0.05f,0.03f,-0.03f,0.56,0.19,-0.33};
double b[]={0.00f,0.00f,-0.14f,0.14f,0.44f,0.07f,-0.34f};
double c[]={0.00f,0.00f,0.00f,0.00f,-0.37f,-0.1f,-0.33f};
double d[]={0.4f,-0.4f,0.26f,-0.26f,0.51f,0.15f,0.34f};
double e[]={-0.06f,-0.06f,-0.16f,-0.16f,0.3f,-0.2f,-0.54f};
double f[]={-0.47f,-0.47f,-0.01f,-0.01f,0.15f,0.18f,0.39f};
double g1[]={-0.33f,-0.34f,-0.33f,0.34f,-0.54f,0.39f};
Random ran=new Random();
//x,y为树的坐标
int x=800,y=800;
double xx=x,yy=y;
for(int i=0;i<600000;i++){
int t=ran.nextInt(7);
g.drawLine(x,y,x,y);
Color color=new Color(0,129,59);
g.setColor(color);
double m,n;
m=a[t]*(xx)+b[t]*(yy)+e[t];
n=c[t]*(xx)+d[t]*(yy)+f[t];
System.out.println("m="+m+" "+"n="+n);
xx = m;
yy = n;
x=(int)(m*300)+200;
y=(int)(n*300)+200;
x = Math.abs(x-600);
y = Math.abs(y-600);
System.out.println("x="+x+" "+"y="+y);
}
}
}
树叶——
主函数:package cn.netjava.cf0521;
import java.awt.Graphics;
import javax.swing.JFrame;
public class ColorPanel {
public static void main(String args[]){
ColorPanel cp=new ColorPanel();
cp.unit();
}
public void unit(){
JFrame jf=new JFrame();
jf.setTitle("画 板");
jf.setSize(1000,700);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
Graphics g=jf.getGraphics();
Drawing dr=new Drawing(g);
dr.Leaf();
}
}
方法函数:
package cn.netjava.cf0521;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
public class Drawing {
Graphics g;
public Drawing(Graphics g){
this.g=g;
}
public void Leaf(){
int x=200,y=200;
double a[]={0.0000f,0.7248f,0.1583f,0.3386f};
double b[]={0.2439f,0.0337f,-0.1297f,0.3694f};
double c[]={0.0000f,-0.0253f,0.3550f,0.2227f};
double d[]={0.3053f,0.7426f,0.3676f,-0.0756f};
double e[]={0.0000f,0.2060f,0.1383f,0.0679f};
double f[]={0.0000f,0.2538f,0.1750f,0.0826f};
Random ran=new Random();
double m,n;
double xx=x,yy=y;
for(int i=0;i<100000;i++){
g.drawLine(x,y,x,y);
g.setColor(Color.GREEN);
int t=ran.nextInt(4);
m=a[t]*(xx)+b[t]*(yy)+e[t];
n=c[t]*(xx)+d[t]*(yy)+f[t];
xx=m;
yy=n;
x=(int)(m*300)+200;
y=(int)(n*300)+200;
x=Math.abs(x-700);
y=Math.abs(y-700);
System.out.println("x="+x+" "+"y="+y);
}
}
}
- 大小: 87.1 KB
- 大小: 311.6 KB
- 大小: 13.2 KB
- 大小: 6.1 KB
- 大小: 2.8 KB
- 大小: 1.9 KB
分享到:
相关推荐
分形方面,可能会涉及分维计算、分形几何在图像处理、地理信息系统、金融市场等方面的运用,以及如何通过分形理论来理解和描述复杂系统。 压缩包内的文件名称揭示了研究的具体主题: 1. “交通流量时间序列混沌...
分形技术是将这种数学理论应用到计算机科学领域的方法,它涉及计算几何、图形学、图像处理等多个方面。通过分形技术,我们可以创建出高度逼真的自然景观,如森林、山脉和河流,因为这些自然现象都符合分形的规律。 ...
分形几何是一种在数学、计算机科学以及艺术领域中广泛应用的理论,它研究的是那些具有自相似性质的复杂形状。...这不仅可以加深对分形理论的理解,也有助于提升MATLAB编程技巧,特别是在图形和算法设计方面。
在计算机科学领域,分形理论被广泛应用于图像处理、图形生成、数据压缩等多个方面。本资料包中包含了丰富的分形相关资源,包括源码、书籍和屏保代码,有助于深入理解和应用分形概念。 首先,我们来看《分形艺术》....
这个项目不仅可以帮助学习者深入理解分形几何的美,也能锻炼其编程技巧,特别是图形用户界面设计和图形绘制方面的技能。同时,这也是一个很好的课程设计实例,能够综合运用计算机图形学、数学和编程等多个领域的知识...
分形插值是一种在计算机科学和数学领域中用于数据拟合和插值的高级技术,特别是在处理不规则或复杂的数据集时。它基于分形理论,即利用分形...通过学习和应用这个压缩包中的代码,可以提高在数据拟合和分析方面的能力。
得到图1,再将图1中的每条线段按图1的折线变换得到图2,以此类推,进行6次变换就得到图6,如果进行无限次变换,就得到的是Couch曲线,Couch曲线的维数不是整数维,更多详情请见分形方面的书籍。 用分形图形能画图...
### 分形图形学中的随机分形课件 #### 分形图形学概述 分形图形学是一门研究...通过对随机分形的研究,我们不仅能更好地理解自然界的复杂性,还能为设计新型材料、优化工程结构等方面提供重要的理论支持和技术手段。
《混沌与分形:科学的新疆界(第2版)》介绍了分形与混沌理论的基础...重点介绍了分形与混沌的物理意义、两者之间的关系、与数学的其它方面以及自然现象的联系,展示出分形与混沌的在视觉、图像方面的优美结构和图案。
分形软件的核心功能通常包括以下几个方面: 1. **分形算法实现**:软件内置了各种分形生成算法,如曼德勃罗集、朱利亚集、科赫雪花等。用户可以选择不同的算法来创建不同类型的分形图案。 2. **参数调整**:用户...
在图像处理中,分形维数可以应用于图像分割、纹理分析、噪声检测等方面。比如,通过计算图像的分形维数,我们可以识别图像中的边界,或者区分不同纹理的复杂程度。 calcFD工具箱的具体使用步骤通常包括以下几步: 1...
在IT领域,分形是一种非常独特且引人入胜的概念,它涉及到数学、计算机图形学以及艺术等多个方面。本文将详细探讨"分形多渲染方式"这一主题,结合描述中的曼德布罗特集、茱莉亚集和牛顿迭代法,以及相关源码,深入...
分形是一种在自然界中广泛存在的几何形态,它们具有自相似性和复杂的...在给定的"分形程序"压缩包中,可能包含了实现上述分形的MATLAB代码,通过阅读和运行这些程序,你可以进一步提升在分形计算和可视化方面的技能。
分形几何,这一独特而富有魅力的数学领域,与计算机科学(CS)有着深厚的联系,尤其是在图像处理和数据可视化方面。分形,源自希腊词"fractal",意为“碎片”或“分支”,它是一种具有自相似性的几何形态,无论在...
分形分析涉及多个方面,包括分形维数计算、分形几何构造、分形图像处理等。在MATLAB中,我们可以使用如下的方法进行分形计算: 1. **分形维数计算**:计算一个对象的分形维数是理解其复杂性的关键。MATLAB可以通过...
M.Barnsley的工作展示了分形图像压缩在航空图像压缩方面的巨大潜力,达到了1000:1的压缩比,尽管存在一些局限性。 为了更好地实现分形图像压缩,引入了Hausdorff度量,使得图像集合形成了一个完备的度量空间,每个...
在计算机科学领域,分形是一种具有自相似性质的几何形状,它们在不同尺度上重复自身,展现出无穷的复杂性...同时,这也是一个极好的学习资源,对于想要在图形编程和分形艺术方面有所涉猎的人而言,具有很高的实践价值。