本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形. (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置: b.将计算出的中点做为当前点,再重新执行操作a 相关代码如下: class SierpinskiTriangle : public FractalEquation { public: SierpinskiTriangle() { m_StartX = 0.0f; m_StartY = 0.0…
谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.也有的资料将其称之为谢尔宾斯基坟垛. 其生成过程为: 取一个实心的三角形.(多数使用等边三角形) 沿三边中点的连线,将它分成四个小三角形. 去掉中间的那一个小三角形. 对其余三个小三角形重复1. 核心代码: static void SierpinskiTriangle(const Vector3& v1, const Vector3& v2, cons…
前面讲了谢尔宾斯基三角形,和这一节的将把三角形变为正方形,即谢尔宾斯基地毯,它是由瓦茨瓦夫·谢尔宾斯基于1916年提出的一种分形,是自相似集的一种. 谢尔宾斯基地毯的构造与谢尔宾斯基三角形相似,区别仅在于谢尔宾斯基地毯是以正方形而非等边三角形为基础的.将一个实心正方形划分为的9个小正方形,去掉中间的小正方形,再对余下的小正方形重复这一操作便能得到谢尔宾斯基地毯.如下图:       核心代码: static void SierpinskiCarpet(const Vector3& v, Vect…
前面讲了谢尔宾斯基三角形,这一节的将对二维三角形扩展到三维,变成四面体.即将一个正四面体不停地拆分,每个正四面体可以拆分成四个小号的正四面体.由二维转变到三维实现起来麻烦了许多.三维的谢尔宾斯基四面体看上去比谢尔宾斯基三角形更像坟冢. 核心代码: static void SierpinskiTetrahedron(const Vector3* pSrc, Vector3* pDest) { Vector3 v01 = (pSrc[] + pSrc[])*0.5f; Vector3 v02 = (…
定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def listsum(numlist): if len(numlist) == 1: return numlist[0] else: return numlist[0]+listsum(numlist[1:]) if __name__ == "__main__": print(listsum([…
渐入佳境. # coding: utf-8 import turtle ''' # =================turtle练手== def draw_spiral(my_turtle, line_len): if line_len > 0: my_turtle.forward(line_len) my_turtle.right(70) draw_spiral(my_turtle, line_len-10) my_tur = turtle.Turtle() my_win = turtle.…
文章首发于我的知乎专栏,原地址:https://zhuanlan.zhihu.com/p/26606208 以前看到过一个问题:谢尔宾斯基三角形能用编程写出来么?该怎么写? - 知乎,在回答里,各方大神用各种语言各种方法实现了一遍,非常精彩.我当时也回答了这个问题,是用H5的Canvas实现的.这在前端技术上没什么难度,主要是算法比较有可玩性,所以当时就手痒了. 谢尔宾斯基三角形是分形图形的一种,大概很多人第一次见到它都是在中学教科书上.它长这样: 我用了两种方法构造它:直接绘制三角形和间接用折…
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟画图的艺术价值,可以改变尾巴宽度和尾巴浸入墨水的颜色. 1.递归绘制螺旋 我们让乌龟以line_len长度前进,然后向右旋转90°,然后缩短line_len长度递归调用draw_spiral函数 import turtle my_turtle = turtle.Turtle() my_win = t…
谢尔宾斯基三角形使用了三路递归算法,从一个大三角形开始,通过连接每一个边的中点,将大三角型分为四个三角形,然后忽略中间的三角形,依次对其余三个三角形执行上述操作. 运行效果: 源代码: 1 import turtle 2 3 4 def draw_triangle(points, color, my_angle): 5 my_angle.fillcolor(color) 6 my_angle.up() 7 my_angle.goto(points[0][0], points[0][1]) 8 m…
IFS是分形的重要分支.它是分形图像处理中最富生命力而且最具有广阔应用前景的领域之一.这一工作最早可以追溯到Hutchinson于1981年对自相似集的研究.美国科学家M.F.Barnsley于1985年发展了这一分形构型系统,并命名为迭代函数系统(Iterated Function System,IFS),后来又由Stephen Demko等人将其公式化,并引入到图像合成领域中.IFS将待生成的图像看做是由许多与整体相似的(自相似)或经过一定变换与整体相似的(自仿射)小块拼贴而成.算法: 1.…