ProE复杂曲线方程:Python Matplotlib 版本代码(L系统,吸引子和分形)
对生长自动机的研究由来已久,并在计算机科学等众多学科中,使用元胞自动机的概念,用于生长模拟。而复杂花纹的生成,则可以通过重写一定的生长规则,使用生成式来模拟自然纹理。当然,很多纹理是由人本身设计的,其形成过程本身就是在人脑中进行“原胞生成”的过程。
基础理论抄自于基础百科。
来自于百度百科:L-系统是匈牙利生物学家Aristid LinderMayer于1968年提出的。.L-系统的本质是一个重写系统,通过对植物对象生长过程的经验式概括和抽象,初始状态与描述规则,进行有限次迭代,生成字符发展序列以表现植物的拓扑结构,并对产生的字符串进行几何解释,就能生成非常复杂的分形图形。
详细介绍
分别描述
提前升级matplotlib:
为避免环境问题,切换至python3
或不担心环境问题,或者在python2中
pip install --upgrade matplotlib
def mainex():#drawsemilogx();#drawLorenzAttractor();#drawLeaf();#未成功#drawLSystem();#drawIsoLine();#drawFourFlower();#drawFlowers();drawBranch();#drawStar();#drawPillar(); #为了画吸引子
def get_lines(rule):d = rule['direct']a = rule['angle']p = (0.0, 0.0)l = 1.0lines = []stack = []info = rule['S']for i in range(rule['iter']):ninfo = []for c in info:if c in rule:ninfo.append(rule[c])else:ninfo.append(c)info = "".join(ninfo)for c in info:if c in "Ff":r = d * pi / 180t = p[0] + l*cos(r), p[1] + l*sin(r)lines.append(((p[0], p[1]), (t[0], t[1])))p = telif c == "+":d += aelif c == "-":d -= aelif c == "[":stack.append((p,d))elif c == "]":p, d = stack[-1]del stack[-1]return linesdef draw(ax, rule, iter=None):if iter!=None:rule["iter"] = iterlines = get_lines( rule )linecollections = collections.LineCollection(lines)ax.add_collection(linecollections, autolim=True)ax.axis("equal")ax.set_axis_off()ax.set_xlim(ax.dataLim.xmin, ax.dataLim.xmax)ax.invert_yaxis()def drawBranch():fig = plt.figure(figsize=(8,6))fig.patch.set_facecolor("w")ax = fig.add_subplot(111);ruleBranch={"X":"F-[[X]+X]+F[+FX]-X", "F":"FF", "S":"X","direct":-45,"angle":25,"iter":4,"title":"Plant"}draw(ax, ruleBranch);fig.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=0,hspace=0)plt.show();
洛伦兹吸引子:
def drawLorenzAttractor():xs, ys, zs = [], [], [];def mkPoints(): a, b, c = 10.0, 28.0, 8.0 / 3.0 h = 0.01 x0, y0, z0 = 0.1, 0, 0 for i in xrange(10000): x1 = x0 + h * a * (y0 - x0) y1 = y0 + h * (x0 * (b - z0) - y0) z1 = z0 + h * (x0 * y0 - c * z0) x0, y0, z0 = x1, y1, z1 xs.append(x0) ys.append(y0) zs.append(z0);mpl.rcParams["legend.fontsize"] = 10;fig = plt.figure() ax = Axes3D(fig) mkPoints();ax.plot(xs, ys, zs, label = "Lorenz's strange attractor") ax.legend() plt.show()
ProE复杂曲线方程:Python Matplotlib 版本代码(L系统,吸引子和分形)相关推荐
- ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
花纹的生成可以使用贴图的方式,同样也可以使用方程,本文列出了几种常用曲线的方程式,以取代贴图方式完成特定花纹的生成. 注意极坐标的使用................. 前面部分基础资料,参考:Pyt ...
- ProE常用曲线方程:Python Matplotlib 版本代码(玫瑰曲线)
Pyplot教程:https://matplotlib.org/gallery/index.html#pyplots-examples 玫瑰曲线 文字描述 平面内,围绕某一中心点平均分布整数个正弦花瓣 ...
- python 画蝴蝶_ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
花纹的生成可以使用贴图的方式,同样也可以使用方程,本文列出了几种常用曲线的方程式,以取代贴图方式完成特定花纹的生成. 注意极坐标的使用................. 顾名思义,蝴蝶曲线(Butte ...
- 蝴蝶曲线python_ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
花纹的生成可以使用贴图的方式,同样也可以使用方程,本文列出了几种常用曲线的方程式,以取代贴图方式完成特定花纹的生成. 注意极坐标的使用................. 顾名思义,蝴蝶曲线(Butte ...
- python蝴蝶代码_ProE常用曲線方程:Python Matplotlib 版本代碼(蝴蝶曲線)
花紋的生成可以使用貼圖的方式,同樣也可以使用方程,本文列出了幾種常用曲線的方程式,以取代貼圖方式完成特定花紋的生成. 注意極坐標的使用................. 顧名思義,蝴蝶曲線(Butte ...
- 用Python Matplotlib实现可视化混沌系统
二十世纪的三大科学发现分别是:混沌.相对论和量子力学.爱因斯坦创立的相对论统一了时空观,普朗克等科学家发现的量子力学揭示了微观世界的不可观测性,而Lorenz提出的混沌预示着**确定性系统中蕴含着随机 ...
- python输出箭头代码_python matplotlib 注释文本箭头简单代码示例
注释文本箭头 结果展示: 完整代码示例: import numpy as np import matplotlib.pyplot as plt fig,ax = plt.subplots(figsiz ...
- python3 x完全兼容_中国大学MOOC: Python 3.x 系列版本代码完全兼容 Python 2.x系列的既有语法。...
中国大学MOOC: Python 3.x 系列版本代码完全兼容 Python 2.x系列的既有语法. 答:错 业务流程改造后组织的特征是 答:组织扁平化 提高经济效益 提高组织效率 能更快地为顾客服务 ...
- python matplotlib 论文画图代码总结
最近赶了一篇论文,其中涉及到很多实验结果的绘制.最开始使用了pandas自带的plot功能,使用简单,但是很多细节都无法自己调节定制,默认的结果又相当的丑.于是参考了csdn上各位大佬的分享,这些分享 ...
最新文章
- 【组队学习】【28期】R语言数据科学
- [译]编写优雅的JavaScript代码 - 最佳实践
- 山寨山寨版手机安全卫士项目
- 支持app需要多大的服务器,上海app开发需要多大服务器空间?
- Linux crontab 定时任务设置
- Leetcode 1. 两数之和 (Python版)
- php怎么分割页面,将一个页面分成多个html文件(静态html分割页面)
- MotifStack:多motif序列比较和可视化
- 抖音下拉框中的下拉词是怎么出来的?
- native method jvm
- 20162327WJH四则运算第二周总结
- CodeForces 669A Little Artem and Presents
- 为什么JBX写的代码在编译时,总是少字符呢?
- 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F
- 一毕业就上了艘“火箭”,这群校招生在大公司创业
- python京东抢购软件_福利来了,python 京东抢购茅台脚本(亲测可用)
- 微信小程序中的iPhone X适配解决
- 常见计算机类杂志投稿方式
- 区块链安全是场持久战,比特安审计与诸君共勉
- parcelable接口实现
热门文章
- WebStorm 常用功能的使用技巧分享
- C与CPP 在线手册查找
- jQuery EasyUI使用教程之创建标签页
- Tomcat : IOException while loading persisted sessions: java.io.EOFException
- jQuery 1.4单独为某个动画动作设效果
- 用GCD来处理大量for loop任务
- 结对-贪吃蛇游戏-开发过程
- Homogeneous Coordinates(齐次坐标)
- Quartus16.0如何使用TCL脚本
- 我的学习之路_第二章_接口/多态