`
香煎马鲛鱼
  • 浏览: 110054 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

分形——谢尔宾斯基三角形

    博客分类:
  • java
阅读更多
分形——谢尔宾斯基三角形
普通几何学研究的对象,一般都具有整数的维数。比如,零维的点、一维的线、二维的面、三维的立体、乃至四维的时空。在20世纪70年代末80年代初,产生了新兴的分形几何学(fractal geometry),空间具有不一定是整数的维,而存在一个分数维数。这是几何学的新突破,引起了数学家和自然科学者的极大关注。根据物理学家李荫远院士的建议,大陆将fractal一开始就定译为“分形”,而台湾学者一般将fractal译作“碎形”。
                                                               ——摘自百度百科
对于初学Java的同学来说,做分形,的确是一个锻炼思维,熟悉递归算法的好方法,而在众多分形图案中,谢尔宾斯基三角形可以说是比较容易入手的,因为它不管是公式还是图案都比较简单,学会如何用java画歇尔滨斯基三角形后,再画其他图案都会简单很多;今天我们就从歇尔滨斯基三角形入手,进入分形的世界.
1、用Java绘制歇尔滨斯基三角形首先要知道如何建立窗体,调取画布对象,如何画线,有一定的数学基础(了解正三角形的性质),还有——数学思维。
2、打开eslips,建立一个Java的工程命名自己命吧,这个随便的哈;

(这是我建立的工程)
//3、这个程序需要引入的包:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;

//4、主类继承JFrame,因此Retangerate拥有所有JFrame的方法
public class Retangerate extends JFrame{

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub

Retangerate a = new Retangerate();
a.Draw();
}
//
//5、需要创建的方法一:(绘制三角形)
//在这个方法里绘出窗体,并生成画布对象
public void Draw() {
this.setSize(1000,700);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setVisible(true);
Graphics g = this.getGraphics();

//6、定义重绘方法,拖动窗口,改变窗口大小后,绘制的图片仍然留在窗体上
}
public void paint(Graphics g){
super.paint(g);
this.Show(100,600,900,600,500,30,200,235,235,10,g);//调用递归函数Show(),所涉及的参数:x1的位置,y1的位置,x2的位置,y2的位置,x3的位置,y3的位置,(以下三个属性是颜色控制,如果需要渐变色彩的话)

}
public void show(double x,double y,double x2,double y2,double x3,double y3,int a,int b,int c,int count,Graphics g){
int tempx = (int)x;
int tempy = (int)y;
int tempx2 = (int)x2;
int tempy2 = (int)y2;
int tempx3 = (int)x3;
int tempy3 = (int)y3;
if(a<0||b<0||c<0)
{
a=355;
b=155;
c=35;
}
//计算出三点的位置
g.setColor(new Color(a,b,c));
g.drawLine(tempx,tempy,tempx2,tempy2);
g.drawLine(tempx,tempy,tempx3,tempy3);
g.drawLine(tempx2,tempy2,tempx3,tempy3);
if(count>=2){//判断是否进行递归
int xm = tempx;
int ym = tempy;
int xm2 = tempx2;
int ym2 = tempy2;
int xm3 = tempx3;
int ym3 = tempy3;
tempx = (xm+xm2)/2;
tempy = (ym+ym2)/2;
tempx2 = (xm+xm3)/2;
tempy2 = (ym+ym3)/2;
tempx3 = (xm3+xm2)/2;
tempy3 = (ym3+ym2)/2;
this.Show(xm,ym,tempx,tempy,tempx2,tempy2,a-10,b-16,c-10,count-1,g);
this.Show(tempx,tempy,xm2,ym2,tempx3,tempy3,a-14,b-16,c-18,count-1,g);
this.Show(xm3,ym3,tempx2,tempy2,tempx3,tempy3,a-17,b-14,c-0,count-1,g);//由于下次分形要分成三个所以要在一次Show调用自己三次
g.drawLine(tempx,tempy,tempx2,tempy2);
g.drawLine(tempx,tempy,tempx3,tempy3);
g.drawLine(tempx2,tempy2,tempx3,tempy3);
}
else{
return ;
}
}

}

分享到:
评论

相关推荐

    使用MFC实现的三角形分形(谢尔宾斯基三角形)

    代码是基于VS2015编写的,如果你的IDE高于此版本双击.sln文件...代码编译成功运行之后:先用鼠标在界面里面左键单击选择三个点作为三角形的顶点,然后双击界面即可迭代生成一次分形,再次双击即可迭代两次,以此类推

    谢尔宾斯基三角形[分享]

    谢尔宾斯基三角形,一个在数学和计算机科学中广泛应用的分形模型,以其无限递归和自相似的特性吸引着全世界的数学爱好者和研究人员。由波兰数学家瓦迪斯瓦夫·谢尔宾斯基在1915年提出,谢尔宾斯基三角形起初仅仅是一...

    分形图-谢尔宾斯基三角形-彩色.sb3

    分形图-谢尔宾斯基三角形-彩色

    谢尔宾斯基三角形:分形谢尔宾斯基-matlab开发

    谢尔宾斯基三角形,又称为谢尔宾斯基海绵或Sierpinski三角,是一种经典的分形几何形状,由波兰数学家瓦茨瓦夫·谢尔宾斯基在1915年提出。分形是数学中一个独特的概念,它描述了一类具有自相似性的几何结构,即使放大...

    大家一起来玩分形——SimpleFractal0.01发布

    大家一起来玩分形,本程序为基于图片的分形程序,让分形创作变为一种游戏! &lt;br&gt;简单来说程序有两大特色: &lt;br&gt; 一、引入SQFormula复数计算引擎 &lt;br&gt; 利用该引擎,本程序实现了迭代公式、终止条件公式和...

    分形几何——数学基础及其应用

    2. **分形的构造**:详细探讨了如何构建典型的分形模型,如康托集、谢尔宾斯基三角形等。通过具体的构造方法,加深对分形结构的理解。 3. **分形的度量**:讨论了分形的尺寸测量问题,包括豪斯多夫维数、盒维数等。...

    分形对象——形、机遇和维数.pdf

    分形对象——形、机遇和维数. 分形创始人的力作

    Sierpinski-p5js:递归绘制谢尔宾斯基三角形分形(使用 p5.js 重构一个 C++ 项目)

    **谢尔宾斯基三角形** 是一种著名的分形几何图形,以其独特的自相似性而闻名。这个项目使用了 **p5.js** ,一个基于 JavaScript 的开源创意编程库,来重构了一个原本用 C++ 实现的程序,使得艺术家、设计师以及...

    L系统_重写系统_希尔伯特曲线_谢尔宾斯基三角形_科赫曲线

    谢尔宾斯基三角形,又称为分形三角形,是由波兰数学家谢尔宾斯基提出的另一个著名的分形几何形状。它的构造过程是将一个大的等边三角形分割成四个小等边三角形,然后去除中间的一个,对剩余的三个再重复此过程。经过...

    很好用的分形计算,里面还有验证的程序。我一直在用,推荐给大家

    `fd_sierp.m`可能用于计算另一种分形——谢尔宾斯基地毯的分形维数。谢尔宾斯基地毯类似于三角形,但它是基于正方形的。在这个过程中,将一个正方形划分为9个相同的小正方形,移除中间的一个,然后对剩下的8个小...

    sierpinski-triangles:使用递归在 HTML5 画布上绘制分形谢尔宾斯基三角形

    该站点使用 JQuery 滑块来获得所需的谢尔宾斯基三角形复杂度级别,从 1(只有一个等边三角形)到 9 级深。 然后递归函数绘制分形图案。 基本情况是单个等边三角形,函数调用自身在这些三角形内绘制更多三角形。 ...

    谢尔宾斯基三角形:谢尔宾斯基三角形的细胞自动化方法-matlab开发

    谢尔宾斯基三角形是一种著名的分形几何图形,由波兰数学家谢尔宾斯基在1915年提出。这个三角形的构造过程基于一系列简单的迭代规则,每次迭代都将当前的三角形分割成四个更小的等边三角形,然后删除中间的一个,如此...

    毕业设计MATLAB_谢尔宾斯基三角形.zip

    谢尔宾斯基三角形是一种分形几何图形,通过递归地将一个大三角形划分为四个小三角形并去除中间部分来构建。这个设计可能涉及到图像处理和算法实现,是MATLAB编程在图形和分形理论应用的一个实例。 描述中提到的...

    华中科技大学计算机图形学上机实验——分形三角形和三维场景绘制源码

    在华中科技大学的计算机图形学课程中,学生通过上机实验深入理解和掌握相关理论,其中一个实验主题是“分形三角形和三维场景绘制”。这个实验旨在让学生了解并实践分形几何和3D场景构建的基本原理。 分形三角形是一...

    谢尔宾斯基三角形.py

    谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585

    vc++实现分形三角形

    在本案例中,我们将探讨如何使用VC++编程语言来实现一种分形图形——分形三角形。 ### 二、分形三角形原理 分形三角形通常是通过迭代函数系统(Iterated Function System, IFS)来定义的。IFS是一组由仿射变换组成...

    python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)

    谢尔宾斯基三角形是一种分形图形,它的生成过程涉及到三次递归。我们首先定义一个`draw_triangle`函数用于填充指定颜色的三角形,然后编写`get_mid`函数计算两点的中点。核心函数`sierpinski`接收一个三角形的顶点...

    毕业设计MATLAB_谢尔宾斯基分形三角形.zip

    标题中的“MATLAB_谢尔宾斯基分形三角形”是指使用MATLAB编程实现的谢尔宾斯基(Sierpinski)分形三角形。这是一个经典的几何分形例子,通过迭代过程将一个大三角形不断分割成更小的三角形,形成具有自相似性的图案...

    Fratal:使用非常简单的规则使用骰子生成谢尔宾斯基三角形-matlab开发

    谢尔宾斯基三角形,也称为分形三角形,是一种经典的分形几何形状,由波兰数学家谢尔宾斯基在1960年代提出。这个三角形通过一系列简单规则的迭代操作自动生成,具有无限细节和自相似性,是混沌理论和分形几何学中的一...

Global site tag (gtag.js) - Google Analytics