分形——毕达哥拉斯树
1.思路:
首先,画一个正方形(相当于树干,是最下面的一个正方形;
其次,以上一个正方形最上面的边(顶边)为直角三角形的斜边;
以该边的左边一点为下一个正方形的底边上的一点,旋转一定角度画正方形(左边正方形;
同样的方法,以另一点(右边)再画一个正方形(右边正方形;
这两个正方形的底边与上一个正方形顶边组成一个直角三角形;
然后,用递归(即重复以上方法)画出整个分形;
2.分析:左右两边的正方形旋转的角度加和为90度;
先假设左边的正方形旋转30度,即右边为60度(每次旋转角度相同)
每次同时画左右两边
3.操作:在监听器中实现(新正方形顶边左(a1,a2)右(b1,b2)直角三角形直角顶点(c1,c2))
public void mouseReleased(MouseEvent e) {
//基础正方形
g.drawRect(500, 500, 100, 100);
//调用分形的方法
Draw(500,600,600,600,0,0);
}
//分形的方法
public void Draw(double x1,double y1,double x2,double y2,double jiaodu,int n){
//上一个正方形的边长左(x1,y1)右(x2,y2)
double s1=Math.hypot(Math.abs(x2-x1), Math.abs(y2-y1));
//jiaodu---上一个正方形转动的角度,P为3.1415,Q1为每次左边正方形的转动角度,Q2为每次右边正方形的转动角度
double sin1=Math.sin(jiaodu*P/180);
double cos1=Math.cos(jiaodu*P/180);
double b=s1*Math.cos(Q1*P/180);
double a1,a2,b1,b2,c1,c2;
a1=x1-s1*sin1; a2=y1-s1*cos1;
b1=x2-s1*sin1; b2=y2-s1*cos1;
c1=a1+b*Math.cos((jiaodu+Q1)*P/180);
c2=a2-b*Math.sin((jiaodu+Q1)*P/180);
g.drawLine((int)x1, (int)y1, (int)x2, (int)y2);
g.drawLine((int)x1, (int)y1, (int)a1, (int)a2);
g.drawLine((int)a1, (int)a2, (int)b1, (int)b2);
g.drawLine((int)b1, (int)b2, (int)x2, (int)y2);
g.drawLine((int)a1, (int)a2, (int)c1, (int)c2);
g.drawLine((int)c1, (int)c2, (int)b1, (int)b2);
//递归次数
n++;
if(n>11) return;
//递归调用
//左边正方形
Draw(a1,a2,c1,c2,jiaodu+Q1,n);
//右边正方形
Draw(c1,c2,b1,b2,jiaodu-Q2,n);
}
- 大小: 2.6 KB
- 大小: 13.3 KB
- 大小: 28.4 KB
分享到:
相关推荐
《混沌与分形:科学的新疆界(第2版)》介绍了分形与混沌理论的基础知识、基本原理和特性,包括:分形与自相似、分形的维数与测度、分形与图像数据压缩编码、随机性与确定性、分形的递归结构、细胞元自动机与吸引子、...
1.使用OpenGL设计了分形树,程序运行结果包括一棵带花的树和一棵结果实的树。 2.程序中使用曲面技术做了苹果,苹果挂在树上,比较逼真。 3.资源中包括程序源码文件夹、运行结果截图、实验报告(实验报告包括:实验...
1.分形学 中的Mandelbrot集和Julia集的实现 该分形相当漂亮,并且自己可以在shader文 件中修改颜色映射方式,修改颜色显示方式,由于计算机float型的精度限制,该分形不能 无穷放大,但从理论上来说,可以通过程序...
为了进一步完善煤岩孔隙结构分形特征表征模型及方法,在多孔介质分形定义基础上,通过理论推理建立了适用于煤岩孔隙结构的分形特征表征方法,并通过煤岩压汞试验,评价了不同表征方法之间的差异,最后对煤岩的分形...
该程序应用于一维数据的多重分形分析,是matlab代码
分形几何学是一门以不规则几何形态为研究对象的几何学。相对于传统几何学的研究对象为整数维数,如,零维的点、一维的线、二维的面、三维的立体乃至四维的时空。分形几何学的研究对象为非负实数维数,如0.63、1.58、...
matlab代码实现分形维数计算
分形高斯噪声与分形布朗运动序列的生成--及功率谱估计matlab "分数阶高斯噪声随机数据仿真系统的设计与实现.pdf" create_fgn.m degree_create.m degree_create_fbm_sucess.m EMD emd.m EMD.rar EMDfenshufourier.pdf...
分形插值的matlab程序-分形插值曲面的MATLAB程序.pdf 传统的插值方法, 在相邻的两个信息点之间只能插出直线或者光滑曲线, 而分形插值运用自仿射原 理, 在两个信息点之间可以得到各种波状起伏的折线, 这对于模拟...
openGL实现分形树的源代码,openGL实现分形树的源代码
画一棵分形树,其中定义了树枝、树叶和花,使用海龟绘图
matlab代码实现分形维数计算
分形函数的二维matlab代码,可以成功运行
根据W-M的分形函数,生成W-M函数的曲线,请批评指教。
多重分形研究是描述一种物理量在一个支撑集合上的分布状况,即定义在分形上的多个标度指数的奇异测度所组成的集合,该理论已经被广泛应用于各个科学领域。运用多重分形理论,对吉林某区块的页岩进行扫描、图像二值化等...
分形技术,分形程序,分形动画,分形。。。。。。
最后,再采用基于多孔介质的分形模型对岩芯孔隙分形特征进行验证,得出岩芯的二维分形维数和三维分形维数之间的差值均值为1.000 3, 最大偏差为0. 004,很好地满足多孔介质分形模型中关于二维和三维分形维数的关系。
从粒度分形规律和煤粉研磨超细化分形2个方面对煤粉超细化分形进行了研究,说明煤粒研磨过程中,绝大部分能耗用在小颗粒的研磨上,颗粒表面分形维数越大,研磨能耗越高,颗粒形状越不规则,能耗越大。详细介绍了气体吸附法...
在伪快速相空间中进行了多重分形分析,以研究60A和200A GeV,16O-AgBr碰撞中的多粒子动力学。 已计算出不同分阶矩q的伪分数仓大小的函数的多重分形矩Gq。 在所考虑的数据集中已观察到幂律行为。 深入研究了多重分形...