谢尔宾斯基三角形使用了三路递归算法,从一个大三角形开始,通过连接每一个边的中点,将大三角型分为四个三角形,然后忽略中间的三角形,依次对其余三个三角形执行上述操作. 运行效果: 源代码: 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…
文章首发于我的知乎专栏,原地址:https://zhuanlan.zhihu.com/p/26606208 以前看到过一个问题:谢尔宾斯基三角形能用编程写出来么?该怎么写? - 知乎,在回答里,各方大神用各种语言各种方法实现了一遍,非常精彩.我当时也回答了这个问题,是用H5的Canvas实现的.这在前端技术上没什么难度,主要是算法比较有可玩性,所以当时就手痒了. 谢尔宾斯基三角形是分形图形的一种,大概很多人第一次见到它都是在中学教科书上.它长这样: 我用了两种方法构造它:直接绘制三角形和间接用折…
渐入佳境. # 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.…
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟画图的艺术价值,可以改变尾巴宽度和尾巴浸入墨水的颜色. 1.递归绘制螺旋 我们让乌龟以line_len长度前进,然后向右旋转90°,然后缩短line_len长度递归调用draw_spiral函数 import turtle my_turtle = turtle.Turtle() my_win = t…
谢尔宾斯基三角形(英语: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 = (…
本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形. (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置: b.将计算出的中点做为当前点,再重新执行操作a 相关代码如下: class SierpinskiTriangle : public FractalEquation { public: SierpinskiTriangle() { m_StartX = 0.0f; m_StartY = 0.0…
定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def listsum(numlist): if len(numlist) == 1: return numlist[0] else: return numlist[0]+listsum(numlist[1:]) if __name__ == "__main__": print(listsum([…
转载:http://www.jb51.net/article/118936.htm 本篇文章主要介绍了Python使用plotly绘制数据图表的方法,实例分析了plotly绘制的技巧. 导语:使用 python-plotly 模块来进行压测数据的绘制,并且生成静态 html 页面结果展示. 不少小伙伴在开发过程中都有对模块进行压测的经历,压测结束后大家往往喜欢使用Excel处理压测数据并绘制数据可视化视图,但这样不能很方便的使用web页面进行数据展示.本文将介绍使用python-plotly模块…