#!/usr/bin/python # encoding=utf8 '''Author Anurag Kumar | anuragkumarak95@gmail.com | git/anuragkumarak95 Simple example of Fractal generation using recursive function. What is Sierpinski Triangle? >>The Sierpinski triangle (also with the original orthography Sierpinski), also called the Sierpinski gasket or the Sierpinski Sieve, is a fractal and attractive fixed set with the overall shape of an equilateral triangle, subdivided recursively into smaller equilateral triangles. Originally constructed as a curve, this is one of the basic examples of self-similar sets, i.e., it is a mathematically generated pattern that can be reproducible at any magnification or reduction. It is named after the Polish mathematician Wacław Sierpinski, but appeared as a decorative pattern many centuries prior to the work of Sierpinski. Requirements(pip): - turtle Python: - 2.6 Usage: - $python sierpinski_triangle.py Credits: This code was written by editing the code from http://www.riannetrujillo.com/blog/python-fractal/ ''' import turtle import sys PROGNAME = 'Sierpinski Triangle' if len(sys.argv) !=2: raise Exception('right format for using this script: $python fractals.py ') myPen = turtle.Turtle() myPen.ht() myPen.speed(5) myPen.pencolor('red') points = [[-175,-125],[0,175],[175,-125]] #size of triangle def getMid(p1,p2): return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2) #find midpoint def triangle(points,depth): myPen.up() myPen.goto(points[0][0],points[0][1]) myPen.down() myPen.goto(points[1][0],points[1][1]) myPen.goto(points[2][0],points[2][1]) myPen.goto(points[0][0],points[0][1]) if depth>0: triangle([points[0], getMid(points[0], points[1]), getMid(points[0], points[2])], depth-1) triangle([points[1], getMid(points[0], points[1]), getMid(points[1], points[2])], depth-1) triangle([points[2], getMid(points[2], points[1]), getMid(points[0], points[2])], depth-1) triangle(points,int(sys.argv[1]))