何为分形,简单来说,它就是一种具有自相似特性的现象、图象或者物理过程。虽然定义简单易懂,就是自己包含许许多多相识的部分,但正如黄金分割比0.618一样,它能产生大量令人叹为观止的图案。
常见的分形例子有:谢尔宾斯基三角形和地毯、门格海绵、龙形曲线、空间填充曲线和科赫曲线等等。
大家可以上网轻松地找到。而制作分形也不是件难事,通过PS,Matlab或者Java等软件我们可以试着设计自己独属的分形,作为一种标志。
下面就附上一段制作简单分形的代码,数学公式来源于网上。
import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; public class Ls { double x = 0, y = 0; Random random = new Random(); /** * @param args */ public static void main(String[] args) { Ls py = new Ls(); py.init(); } //初始化界面 public void init() { JFrame jf = new JFrame(); jf.setSize(800, 800); jf.setTitle("分形"); jf.setDefaultCloseOperation(3); jf.setResizable(false); // jf.setBackground(Color.BLACK); jf.setVisible(true); Graphics g = jf.getGraphics(); draw(g); draw2(g); } public void draw(Graphics g) { Graphics2D g2 = (Graphics2D) g; // 使用循环计算出每次迭代值,并完成绘制 for (int i = 0; i < 10000; i++) { double a = -1.7, b = -2.5, c = -2, d = -2; x = d * Math.sin(a * x * Math.PI) - Math.cos(b * y * Math.PI); y = c * Math.cos(a * x * Math.PI) + Math.sin(b * y * Math.PI); int m = (int) ((d * Math.sin(a * x * Math.PI) - Math.cos(b * y * Math.PI)) * 100 + 400); int n = (int) ((c * Math.cos(a * x * Math.PI) + Math.sin(b * y * Math.PI)) * 100 + 350); // 给每个点上颜色,并绘制 // g2.setColor(new // Color(random.nextInt(250)+5,random.nextInt(250)+5,random.nextInt(250)+5)); g2.setColor(new Color(150, i % 255, i % 255)); // 画出这个点 // g.drawLine(m, n, m, n); // g.drawOval(m, n, 5, 5); // g.drawRect(m, n, 3, 3); // g.draw3DRect(m, n,5, 5, false); // g2.fill3DRect(m, n, 2, 2, true); g2.fillRect(m + 1, n + 1, 3, 3); } } public void draw2(Graphics g) { Graphics2D g2d = (Graphics2D) g; double a = 1.40, b = 1.56, c = 1.40, d = -6.56; //循环改变像素点颜色 for (int i = 0; i < 10000; i++) { for (int j = 0; j < 80; j++) { Color color = new Color(j++, j * 2, j * 3); g.setColor(color); } //数学公式 double x1 = d * Math.sin(a * x) - Math.sin(b * y); double y1 = c * Math.cos(a * x) + Math.cos(b * y); int x2 = (int) (x1 * 50) + 400; int y2 = (int) (y1 * 50) + 350; //g.drawLine(x2, y2, x2, y2); g.drawOval(x2, y2, 2, 2); //改变坐标 x = x1; y = y1; } } }
编写分形图案的程序,重在递归这一思想。通过递归,我们可以容易重复相似的部分,同时也简化了代码。
现在,我们就可以通过分形,来创造属于我们眼中的美啦!!!
相关推荐
乔木简历 使用这个 Java 应用程序生成外观酷炫的基于分形的树! 这是一个Eclipse项目。 更深入的解释可以在这里找到: :
读秀高清扫描版!最好的入门书籍!共享给大家!非常不错的书籍,这本书不仅讲了原理,还给出了MATLAB源程序,应该是最好的入门书籍!
张济忠老师的经典入门书籍!读秀高清扫描版!最好的入门书籍!共享给大家!非常不错的书籍,这本书应该是分形几何最好的入门书籍!
多重分形程序的运行,应用于matlab中,以及其运行结果的运算!
自写MFC实现分形云层,计算机图形学上机可能会用得到
分形技术,分形程序,分形动画,分形。。。。。。
该程序应用于一维数据的多重分形分析,是matlab代码
大家一起来玩分形,本程序为基于图片的分形程序,让分形创作变为一种游戏! <br>简单来说程序有两大特色: <br> 一、引入SQFormula复数计算引擎 <br> 利用该引擎,本程序实现了迭代公式、终止条件公式和...
分形的一些论文,欢迎下载。 同时也有几种分形构成的方法。
matlab代码实现分形维数计算
关于分形的,很好的东西! 对于想了解分形得人比较有用!!!!!
分形几何的matlab代码的一个小栗子。上课的一个作业。
本人收集的分形的资料和源码 包含分形屏保的代码 分形图生成的代码 和几本分形方面的书籍。
分形图形制作软件分形图形制作软件分形图形制作软件分形图形制作软件vvv
openGL实现分形树的源代码,openGL实现分形树的源代码
包含m文件,数据示范格式等,用来计算数列多重分形维数
matlab代码实现分形维数计算
讲解分形图形学中关于随机分形的一些详细内容,其中也有图形实例讲解
发人们去探索。分形使人们觉悟到科学与艺术的融合,数学与艺术审美上的统一,使昨日枯 燥的数学不再仅仅是抽象的哲理,而是具体的感受;不再仅仅是揭示一类存在,而是一种 艺术创作,分形搭起了科学与艺术的桥梁。 ...
画一棵分形树,其中定义了树枝、树叶和花,使用海龟绘图