[by Sunyuemng ymsjj@sina.com 转载请保留]
这是上半年对分形有兴趣的写的,用到了pygame作为显示接口,
你把pygame的接口函数集看看就很清楚了,然后就是充分利用
了python的数据类型的优势,对对象很陌生的朋友也很容易搞清
下面的程序,有兴趣的朋友可以看看。
请安装合适版本的Python和PyGame。
#filename fractal.py
import pygame
from pygame.locals import *
fg=220,220,220
bg=0,0,0
#如何指定向量:
#将图形右转90度,使level=1的唯一的线段和线段(0,0)^(1,0)重合,
#然后取父线起点、终点,母线起点,起点指向终点的向量
#∧形填充线父体
f_a=[(.5j,1),
(-.5j,1)]
f_b=[(0,.5),
(.5+.5j,.5-.5j)]
#填充线母体
m_a=[(.5+.25j,.5),
(.5-.25j,.5),
(.25-.5j,.5j),
(.25+.5j,-.5j)]
#龙曲线
m_b=[(.5-.5j,.5+.5j),
(.5-.5j,-.5+.5j)]
#Koch
m_c=[(0,.333),
(.333,.167-.289j),
(.5-.289j,.167+.289j),
(.667,.333)]
#Sierpinski变种
m_d=[(.25-.433j,-.25+.433j),
(.25-.433j,.5),(1,-.25-.433j)]
#四种树
m_e=[(1,.4-.4j),
(1,.4+.4j)]
m_f=[(.5,.5),
(.3,.38+.25j),
(.3,.38-.25j)]
m_g=[(0,.4),(.4,.3),
(.7,.3),(.4,.25-.17j),
(.7,.25+.17j)]
m_h=[(0,.5),
(.5,.5),
(1,.21-.2j),
(1.21-.2j,.41-.12j),
(1.62-.32j,.38+.06j),
(1,.37+.2j),
(1.37+.2j,.36),
(1.73+.2j,.27-.16j)]
p_a=(80+230j,200+0j)
p_b=(50+300j,300+0j)
p_c=(200+330j,-110j)
NAME=['Filling line 1',
'Dragon curve',
'Koch',
'Sierpinski-like',
'Filling line 2',
'Tree 1',
Pygame接口应用?递归分形
时间: 2024-09-19 12:54:23
Pygame接口应用?递归分形的相关文章
二叉树递归分形,牛顿分形图案
1. 牛顿分形(Newton Fractal)在复数域上使用牛顿迭代生成分形图像,函数公式F(z) = z^3 – 1在复数域上面有三个根,一个是1,另外两个分别是复数-0.5+0.87i 与 -0.5 – 0.87i根据计算出来根的值不同转换为RGB三种不同的颜色,根据迭代次数的多少设置颜色值的大小, 即颜色强度. 2. 曼德布罗特集合分形(Mandelbort Set Fractal) 使用复数函数公式F(z) = z^2 + c其中 c是一个复数 3. 递归分形树 (recursion t
初步解读Golang中的接口相关编写方法_Golang
概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心. Go语言中的接口是一些方法的集合(method set),它指定了对象的行为:如果它(任何数据类型)可以做这些事情,那么它就可以在这里使用. 接口的定义和使用 比如 复制代码 代码如下: type I interface{ Get() int Put(int) } 这段话就定义
C# 2.0 Specification (泛型三)
接泛型二这篇文章是翻译的微软的技术文章.供学习c#的朋友参考,请勿用于商业目的.http://msdn.microsoft.com/vcsharp/team/language/default.aspx20.4 泛型委托声明委托声明可以包含类型参数. delegate-declaration: attributes opt delegate-modifiers op t delegate return-type identifier type-parameter-list opt (formal-
pipeline-filter模式变体之尾循环
注:这篇文章的设计存在一些问题,或者说不够优雅.关于原因,请移步本人另一篇文章:<再谈pipeline-filter模式> pipeline-filter作为一种处理数据的模式(见[POSA]卷4)可以将应用的任务划分为几个自我完备的数据处理步骤,并连接到一个数据管道.本文介绍一种不太常见的pipeline-filter的变体--尾循环的pipeline-filter,当然这也是在特定的需求场景下才会出现的. 首先,我们来看一个常见的pipeline-filter的模式图: 模式的思路比较简单
深入理解JVM之六:类加载机制
前言 虚拟机的类加载机制可以简单描述如下:Java虚拟机把描述类的数据从Class文件中加载到内存中,并对数据进行校验.解析和初始化,最终形成可以被虚拟机直接使用的Java类型.虚拟机加载进行类加载的过程是在程序运行期间完成的,在程序运行期间加载的好处是可以动态扩展,说白了就是在编译期间虚拟机是不知道要加载哪些类或者接口的,只有在程序运行的时候才知道需要加载的类.举个例子,我们在一个包下面写了很多类,我们在在别的包中可能只是需要其中的几个类,但是出于习惯我们可能会写成import test.*
javascript实现数据结构:广义表
原文:javascript实现数据结构:广义表 广义表是线性表的推广.广泛用于人工智能的表处理语言Lisp,把广义表作为基本的数据结构. 广义表一般记作: LS = (a1, a2, ..., an) LS是广义表的名称,n是它的长度,ai可以是单个元素,也可以是广义表,分别称为广义表LS的原子和子表.习惯上,用大写字母表示广义表的名称,小写字母表示原子.当广义表LS非空时,称第一个元素a1为LS的表头,称其余元素组成的表(a2, a3, ..., an)是LS的表尾. 下面列举
HotSpot运行时概览#1
原文地址:http://openjdk.java.net/groups/hotspot/docs/RuntimeOverview.html 命令行参数处理 有许多的命令行选项和环境变量可以影响到HotSpot虚拟机的性能.其中有些选项直接由启动器处理(例如-server和-client),有些则是启动器先加工一下再交给虚拟机处理,但大部分选项还是由启动器直接交给虚拟机来处理. 主要有三类选项:标准选项,非标准选项,开发者选项.所有的JVM实现都要支持标准选项,即使不同的版本也要稳定支持(不管选项
javascript先序遍历DOM树的方法_javascript技巧
DOM树由文档中的所有节点(元素节点.文本节点.注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能.既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM树进行遍历,同时DOM2中的"Traversal"模块又提供了两种新的类型,从而可以很方便地实现DOM树的先序遍历. 注:本文中的5种方法都是对DOM的先序遍历方法(深度优先遍历),并且只关注Element类型. 1. 使用DOM1中的基础接口,递归遍历DOM树 DOM1中为基础类型Nod
Facebook通过10亿单词构建有效的神经网络语言模型
由于在语言识别.机器翻译和语言建模等领域表现出了优异的性能,为序列预测而设计的神经网络最近再次引起了人们的兴趣,但是这些模型都是计算密集型的,成本非常高.比如在语言建模领域,最新的成果依然需要在大规模GPU集群上训练几周的时间,虽然效果不错,但是这些计算密集型的实践对大规模计算基础设施的依赖性非常强,这限制了其在学术和生产环境中的研究速度与应用. 针对这一计算瓶颈,Facebook AI 研究院(FAIR)设计了一个新的.几乎是为GPU量身定制的softmax函数,能够非常有效地通过大规模词库训