# -*- coding: utf-8 -*-

#L-System(Lindenmayer system)是一种用字符串替代产生分形图形的算法

from math import sin, cos, pi

import matplotlib.pyplot as pl

from matplotlib import collections

class L_System(object):

def __init__(self, rule):

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)

self.rule = rule

self.info = info

def get_lines(self):

d = self.rule['direct']

a = self.rule['angle']

p = (0.0, 0.0)

l = 1.0

lines = []

stack = []

for c in self.info:

if c in "Ff":

r = d * pi / 180

t = p[0] + l*cos(r), p[1] + l*sin(r)

lines.append(((p[0], p[1]), (t[0], t[1])))

p = t

elif c == "+":

d += a

elif c == "-":

d -= a

elif c == "[":

stack.append((p,d))

elif c == "]":

p, d = stack[-1]

del stack[-1]

return lines

rules = [

{

"F":"F+F--F+F", "S":"F",

"direct":180,

"angle":60,

"iter":5,

"title":"Koch"

},

{

"X":"X+YF+", "Y":"-FX-Y", "S":"FX",

"direct":0,

"angle":90,

"iter":13,

"title":"Dragon"

},

{

"f":"F-f-F", "F":"f+F+f", "S":"f",

"direct":0,

"angle":60,

"iter":7,

"title":"Triangle"

},

{

"X":"F-[[X]+X]+F[+FX]-X", "F":"FF", "S":"X",

"direct":-45,

"angle":25,

"iter":6,

"title":"Plant"

},

{

"S":"X", "X":"-YF+XFX+FY-", "Y":"+XF-YFY-FX+",

"direct":0,

"angle":90,

"iter":6,

"title":"Hilbert"

},

{

"S":"L--F--L--F", "L":"+R-F-R+", "R":"-L+F+L-",

"direct":0,

"angle":45,

"iter":10,

"title":"Sierpinski"

},

]

def draw(ax, rule, iter=None):

if iter!=None:

rule["iter"] = iter

lines = L_System(rule).get_lines()

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()

fig = pl.figure(figsize=(7,4.5))

fig.patch.set_facecolor("w")

for i in range(6):

ax = fig.add_subplot(231+i)

draw(ax, rules[i])

fig.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=0,hspace=0)

pl.show()

python分形曲线代码_Python:绘制L-System的分形图相关推荐

  1. python随机颜色代码_python绘制随机颜色太阳花

    [实例简介] python绘制随机颜色太阳花 [实例截图] [核心代码] #绘制太阳花 # coding=utf-8 import turtle import time import random # ...

  2. python分形曲线代码_Python生成简单分形

    康托集 代码: # 康托集 import pygame pygame.init() screen = pygame.display.set_caption('康托集') screen = pygame ...

  3. python动态时钟代码_python绘制动态时钟

    桌面时钟项目描述 1.使用turtle库绘制时钟外形及表针: 2.使用datetime获取系统时间: 3.时钟动态显示 turtle库基本命令 1.turtle.setup()函数:用于启动一个图形窗 ...

  4. python画熊猫代码_Python 绘制散点图(Pandas + Matplotlib)

    简单绘制一个散点图. 数据使用小朋友的身高和体重,简单看看. 数据结构:下面看一下其中几条的部分内容,我们只需要其中身高(Height)和体重(Weight)列的数据: 共七万五千多条,下面看看通过p ...

  5. Python地理可视化:plotly绘制mapbox地图热力密度图

    Python地理可视化:plotly绘制mapbox地图热力密度图 import plotly.graph_objects as go import numpy as npKEYS = ['中心点经纬 ...

  6. python实现ks算法_Python绘制KS曲线的实现方法

    Python绘制KS曲线的实现方法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python绘制KS曲线的实现方法.txt ] (友情提示:右键点上行txt文档 ...

  7. python 3d绘图模块_Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  8. python课设代码_python课程编程题汇总(上)

    python编程题汇总 众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~ 用这个贴子来记录也和大家分享一下我们课上的编程讨论题 中篇在此→python课程编程题汇总(中) 下篇在此→pytho ...

  9. python阶乘的代码_python编码阶乘

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 需求:阶乘:也是数学里的一种术语: 阶乘指从1乘以2乘以3乘以4一直乘到所要求的 ...

最新文章

  1. opencv 行与列
  2. linux的iso镜像机没有redis,在Linux系统上安装Redis【避坑篇】
  3. 从Java视角理解系统结构(一)CPU上下文切换
  4. 让ERP downloaded product的description能够在CRM被修改
  5. @requestbody 接受int参数_C++之指针作为函数参数
  6. 不得不爱开源 Wijmo jQuery 插件集(10)-【Expander】(附页面展示和源码)
  7. python使用-Python3 错误和异常
  8. css画饼状图圆形,CSS样式圆形饼图百分比
  9. 不需要英语的计算机行业,北京评职称不再考外语计算机 将涉及300多万人
  10. 【Spring-IOC】bean扫描器ClassPathBeanDefinitionScanner详解
  11. 前端和后端哪个工资更高呢?
  12. Ques1017勇者斗恶龙
  13. 电商创业的五大新模式
  14. 医疗器械安全知识小科普
  15. Navicat导入连接
  16. 油猴插件安装以及好用的脚本推荐
  17. RSA 含两道oj 上ctf题目
  18. NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
  19. 分布式系统学习共性总结:
  20. Emacs 从入门到精通

热门文章

  1. hostname -I(大写i)显示主机IP
  2. CentOS6开启BBR加速
  3. 联通光猫桥接、路由拨号设置踩坑
  4. 一个程序员分享8年的开发经验
  5. sharepoint bcs (bussiness connectivity services)
  6. CSS 中的 background 背景属性命令大全
  7. 【数学建模类比赛经验分享】——国赛
  8. 工作任务清单怎么写效率更高
  9. 微软强调Win8.1 Update照顾惯用键鼠用户
  10. android stl 3d模型,3D文件转化为STL文件 - 魔猴网