`
ShXin
  • 浏览: 13267 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

简单分形之谢宾斯基三角形

阅读更多

        学了一段时间的java,接触了很多所谓基础的东西,但总归是没有新奇感的,做出来的大多是一些思维上的产物,而分形出现后,才发现短短几行代码竟可变幻出如此美妙的事物。

        如果没有学习分形,又有谁会想到这张图是用代码敲出来的呢?

 

                            
         那么我们就来看看如何实现这个图形吧。先抛开颜色不管,仔细观察后,我们会发现,它其实就是一个大三角形里面不停的嵌套小三角形,这样想的话思路就会很简单,只要一个小递归就可以实现了。

         这里取三角形的高(h)和底边长的一半(r)作为参数表示点的坐标。

         首先在重绘方法中绘制出初始三角形: 

//重写窗体重绘方法
public void paint(Graphics g){
	super.paint(g);
	int x1=600,y1=50,r=270,h=580;
	g.drawLine(x1, y1, x1-r, y1+h);
	g.drawLine(x1, y1, x1+r, y1+h);
	g.drawLine(x1-r, y1+h, x1+r, y1+h); 
}

         现在我们来写递归函数,每次都传入外边的大三角形,这样它就会在大三角形中绘制出小三角形,随着递归次数增加,大三角形变小,如此循环,直到r、h=0时,停止递归:

public void SJ(int x1,int y1,int r,int h,Graphics g){
	
	//给图形上色,颜色与坐标相关即可做到颜色的变化
	Color c= new Color(x1%255,(x1+y1)%255,(y1*7)%255);
	g.setColor(c);
	
	g.drawLine(x1+r/2, y1+h/2, x1-r/2, y1+h/2);
	g.drawLine(x1-r/2, y1+h/2, x1, y1+h);
	g.drawLine(x1+r/2, y1+h/2, x1, y1+h);

	for(h=h/2,r=r/2;h>0&&r>0;h/=2,r/=2){
		SJ(x1,y1,r,h,g);
		SJ(x1-r,y1+h,r,h,g);
		SJ(x1+r,y1+h,r,h,g);
	}		
}

         最后只要在重绘方法中调用递归方法即可。

SJ(600,50,270,580,g);

         这样就完成了这个分形的基本图形,它有一个很洋气的学名——谢宾斯基三角形。

分享到:
评论

相关推荐

    递归出来的美丽分形世界

    标题中的“递归出来的美丽分形世界”暗示了我们将探讨的是计算机图形学中一个迷人的概念——分形,以及如何通过递归...通过学习和理解谢宾斯基三角的生成过程,不仅能够提升编程技能,还能领略到数学和艺术的交融之美。

    matlab开发-sierpinskitriangle

    在MATLAB环境中,"sierpinski triangle"(西尔宾斯基三角形)是一种常见的分形几何图形。分形是那些具有自相似性且在不同尺度上重复出现的数学对象,Sierpinski三角形正是这类图形的一个经典例子。本项目着重于利用...

    fenxing.rar_fractal

    总之,分形世界是一个充满奇迹的领域,斯尔宾斯基三角垫片作为其代表之一,展示了数学的无穷魅力。通过深入理解和应用分形理论,我们可以更好地理解和模拟自然现象,同时也为计算机科学与艺术创新开辟新的道路。无论...

    matlab开发-碎屑岩

    这里的代码可能是对锡尔宾斯基三角形的变体,如五边形(pentagram)或六边形(hexagon)的分形构造。 3. **3D图形与可视化**: `fern3D.m`文件名提示了3D图形的生成,这可能表示项目不仅仅是二维图像分析,还可能...

    新课标高中数学人教A必修五全册数列的概念与简单表示法二PPT课件.pptx

    在探究谢宾斯基三角形时,我们需要找出其中着色三角形数量所构成的数列的通项公式,这不仅需要观察数列的规律,还需要归纳和总结,从而推导出数列的通项公式。 在没有直接给出通项公式的情况下,学习者可以通过观察...

    2020学年高中数学 综合模块测试14 新人教B版必修5.doc

    22. **希尔宾斯基三角形**:希尔宾斯基三角形是一种分形结构,其着色三角形个数遵循特定的递推关系,可以构建通项公式。 23. **图形构造**:按照给定的规律,继续画出图形,同时统计图形中单位正方形的数量。 以上...

    黑龙江省饶河县高级2016 2017学年高一数学下学期第一次月考试题.doc

    23. **希尔宾斯基三角形**:希尔宾斯基三角形是一种分形,着色方案遵循一定的递归规则,通过这个规则可以找出着色三角形个数的通项公式。 24. **图形中单位正方形的个数**:分析图形中单位正方形的数量变化,找出...

Global site tag (gtag.js) - Google Analytics