python分形曲线代码_Python:绘制L-System的分形图
# -*- 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的分形图相关推荐
- python随机颜色代码_python绘制随机颜色太阳花
[实例简介] python绘制随机颜色太阳花 [实例截图] [核心代码] #绘制太阳花 # coding=utf-8 import turtle import time import random # ...
- python分形曲线代码_Python生成简单分形
康托集 代码: # 康托集 import pygame pygame.init() screen = pygame.display.set_caption('康托集') screen = pygame ...
- python动态时钟代码_python绘制动态时钟
桌面时钟项目描述 1.使用turtle库绘制时钟外形及表针: 2.使用datetime获取系统时间: 3.时钟动态显示 turtle库基本命令 1.turtle.setup()函数:用于启动一个图形窗 ...
- python画熊猫代码_Python 绘制散点图(Pandas + Matplotlib)
简单绘制一个散点图. 数据使用小朋友的身高和体重,简单看看. 数据结构:下面看一下其中几条的部分内容,我们只需要其中身高(Height)和体重(Weight)列的数据: 共七万五千多条,下面看看通过p ...
- Python地理可视化:plotly绘制mapbox地图热力密度图
Python地理可视化:plotly绘制mapbox地图热力密度图 import plotly.graph_objects as go import numpy as npKEYS = ['中心点经纬 ...
- python实现ks算法_Python绘制KS曲线的实现方法
Python绘制KS曲线的实现方法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python绘制KS曲线的实现方法.txt ] (友情提示:右键点上行txt文档 ...
- python 3d绘图模块_Python绘制3D图形
3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...
- python课设代码_python课程编程题汇总(上)
python编程题汇总 众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~ 用这个贴子来记录也和大家分享一下我们课上的编程讨论题 中篇在此→python课程编程题汇总(中) 下篇在此→pytho ...
- python阶乘的代码_python编码阶乘
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 需求:阶乘:也是数学里的一种术语: 阶乘指从1乘以2乘以3乘以4一直乘到所要求的 ...
最新文章
- opencv 行与列
- linux的iso镜像机没有redis,在Linux系统上安装Redis【避坑篇】
- 从Java视角理解系统结构(一)CPU上下文切换
- 让ERP downloaded product的description能够在CRM被修改
- @requestbody 接受int参数_C++之指针作为函数参数
- 不得不爱开源 Wijmo jQuery 插件集(10)-【Expander】(附页面展示和源码)
- python使用-Python3 错误和异常
- css画饼状图圆形,CSS样式圆形饼图百分比
- 不需要英语的计算机行业,北京评职称不再考外语计算机 将涉及300多万人
- 【Spring-IOC】bean扫描器ClassPathBeanDefinitionScanner详解
- 前端和后端哪个工资更高呢?
- Ques1017勇者斗恶龙
- 电商创业的五大新模式
- 医疗器械安全知识小科普
- Navicat导入连接
- 油猴插件安装以及好用的脚本推荐
- RSA 含两道oj 上ctf题目
- NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
- 分布式系统学习共性总结:
- Emacs 从入门到精通