自然几何之分形(3)
自然几何之分形(3)
----递归分形算法 作者:周顺利
由于分形图形具有自相似特性,所以,递归算法成了构造分形图形的必然选择的一种算法,下面就是一个构造分形树的递归算法。
递归分形树的基本算法:
1 设A点的坐标为(x,y),B点的坐标为(x0,y0),C点的坐标为(x1,y1),D点的坐标为(x2,y2),L为树干的长度,a为支干与主干的夹角
2 绘制主干AB,(x,y)--(x0,y0);
3 计算C点的坐标,L=2L/3,x1=x0+L*cos(a),y1=y0-L*sin(a);
4 计算D点的坐标,L=2L/3,x1=x0+L*cos(-a),y1=y0-L*sin(-a);
5 将步骤2中x0->x,y0->y,x1->x0,y1->y0,再绘制(x,y)--(x0,y0)直线,也即是画分支BC;
6 将步骤2中x0->x,y0->y,x2->x0,y2->y0,再绘制(x,y)--(x0,y0)直线,也即是画分支BD;
7 重复执行步骤3->6,直到完成递归次数。
下边是一个java的实现:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class tree1 extends Applet implements ActionListener
{
Dimension d;
Image buffer;
Graphics bufferg;
int level=8; //递归深度
double L=90.0; //初始长度
double t=45.0*(Math.PI/180.0); //叉间角度
double T0=90.0*(Math.PI/180.0); //主干的生长角度
double ratio_x=0.8;
double ratio_y=0.8;
double z=2.0/3.0;
public void actionPerformed(ActionEvent ae)
{
level=Integer.parseInt(ae.getActionCommand());
repaint();
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
if(buffer==null)
{
bufferg=buffer.getGraphics();
}
init_screen();
g.drawImage(buffer,0,0,this);
write_node(g,level,L,T0,0,0);
}
public void init_screen()
{
bufferg.setColor(Color.white);
bufferg.fillRect(0,0,d.width,d.height);
}
public void write_node(Graphics g,int n,double l,double arg,int x,int y)
{
int xx,yy,i;
xx=(int)(l*Math.cos(arg)*ratio_x);
yy=(int)(l*Math.sin(arg)*ratio_y);
bufferg.setColor(Color.blue);
bufferg.drawLine(x+(int)(d.width*0.5),d.height-y,(x+xx)+(int)(d.width*0.5),d.height-(y+yy));
g.drawImage(buffer,0,0,this);
if(n>0)
{
write_node(g,n-1,l*z,(arg-t/2.0)+0.0*t/1.0,x+xx,y+yy);
write_node(g,n-1,l*z,(arg-t/2.0)+0.0*t/1.0,x+xx,y+yy);
}
}
}
将该applet嵌入一个网页,打开网页即可看到图形。
自然几何之分形(3)相关推荐
- 自然几何之分形(2)
自然几何之分形(2) ...
- 自然几何之分形(1)
自然几何之分形(1) ------引言 分形Java Applet源代码: import ...
- 走近分形与混沌(part9)--感性让人自然,理性让人智慧,理性和感性结合才能产生完美
学习笔记 学习书目:<蝴蝶效应之谜:走近分形与混沌 >-张天蓉: 文章目录 分形与音乐 分形与艺术 分形与音乐 一般来说,人们不会否认艺术(如雕塑.建筑.绘画等)与数学的关系,因为它们需要 ...
- python 分型几何学_分形几何学_数学文化欣赏
分形几何学_数学文化欣赏 11.2.1欧几里得几何的局限性 自公元前3世纪欧几里得几何基本形成至今已有2000多年.欧几里得几何的重要性可以从人类的文明史中得到证明.欧几里得几何主要是基于中小尺度上, ...
- 扎哈的绝唱:“六芒星”大兴机场的几何赏析
来源:老何谈几何 作者:顾险峰 本文约6200字,建议阅读10分钟.本文从几何的角度介绍了被誉为"扎哈的绝唱"--大兴机场的构造. 伟大的数学和伟大的艺术精神实质是相通的,伟大的数 ...
- 分形蕨( fractal fern)
今天再一次看Cleve B. Moler 的 Experiments with MATLAB,再一次受触动,人家是matlab的创办人, mathworks公 司的首席科学家兼董事长,曾在美国著名大学 ...
- (论文阅读笔记)OLE:正交低秩嵌入,即插即用的几何损失
论文阅读笔记:OLE: Orthogonal Low-rank Embedding, A Plug and Play Geometric Loss for Deep Learning 摘要 简介 2 ...
- 18个分形图形的GIF动画演示
这里提供18个几何线段分形的GIF动画图像.图形颜色是白色,背景色为黑色,使用最基本的黑与白以表现分形图形.对分形几何有兴趣的人可以看下.我在写程序时基本是参考<分形算法与程序设计_V ...
- 复杂科学2021年度精选:从诺贝尔奖到未来科学
来源:集智编辑部 编者按: 俯仰一息辞旧念,晴空万里无闲云.2021年终于画上句点. 这一年,三位科学家因对理解复杂系统的开创性贡献而斩获诺贝尔物理学奖.诺奖既表彰了以地球气候系统为代表的复杂系统研究 ...
最新文章
- 搭建Docker私有仓库--自签名方式
- Httpwatch 工具介绍
- Android开源工具库
- 开发时对业务技术框架的理解
- android digest 认证,探究 Android 签名机制和原理
- java getidentifier_android – 如何使用getResource.getIdentifier()获取布局?
- WSFC CLUSDB
- 英国野生生物摄影奖之一个地球奖
- python 设计模式之组合模式Composite Pattern
- Go语言中的字符和字符串
- 教你彻底禁止暴风影音后门进程自己启动
- win7开启不了Aero
- 【HTTP协议】---HTTP协议详解
- 用android实现GB28181前端设备接入平台
- sizeof运算符来获取各种数据类型在内存中所占字节数--gyy整理
- itools3.0服务器维护,iTools3.0微信管理功能更新 可支持语音信息
- Adjust接入注意事项
- 淘宝电商创业可能会面临哪些问题?
- 干货:服务器网卡组技术原理与实践
- 273222-06-3,(2S,4R)-Boc-4-amino-1-Fmoc-pyrrolidine-2-carboxylic acid,(2S,4R)-Fmoc-4-叔丁氧羰基氨基吡咯烷-2-甲酸
热门文章
- 领域建模的思想和方法 1
- 寻找连通域C++程序复现(个人C++学习记录)
- iOS原生App与H5页面交互 离线缓存 笔记
- 52ABP显示报错详情
- 每个苹果0.8元,第一天买两个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值,编写程序求每天平均花费多少钱?
- 计算机删除网络对象,恢复故障转移群集中已删除的计算机对象 - Windows Server | Microsoft Docs...
- 一个中文字符对应几个字节?
- 【KingbaseES】如何查看数据库版本号
- 重聚--SDUTACM十周年庆典专场赛 (部分题解)
- HTTPie的安装及使用