The Barnsley Fern is a beautiful fractal that can easily be generated in Python.

If we zoom in on one branch, we see that the pattern is repeated:

The python code follows.

from __future__ import division, print_function import numpy as np import matplotlib.pyplot as plt # Main body of program points = 10000 # The number of points to use. X = [] # A list of x-coordinates Y = [] # A list of y-coordinates # Set the starting point point = [0.5, 0.0] X.append(point[0]) Y.append(point[1]) def new_point(p): """ This function takes in a point (x, y) and generates a new point according to the given equations. """ r = np.random.uniform(0, 1) if r < 0.02: p = [0.5, 0.27*p[1]] elif 0.02 <= r <= 0.17: p = [-0.139*p[0] + 0.263*p[1] + 0.57, 0.246*p[0] + 0.224*p[1] - 0.036] elif 0.17 < r <= 0.3: p = [0.17*p[0] - 0.215*p[1] + 0.408, 0.222*p[0] + 0.176*p[1] + 0.0893] elif 0.3 < r < 1.0: p = [0.781*p[0] + 0.034*p[1] + 0.1075, -0.032*p[0] + 0.739*p[1] + 0.27] return p # Generate a large number of points for i in range(points): point = new_point(point) X.append(point[0]) Y.append(point[1]) # Plot the results plt.scatter(X, Y, c='g', s=.05) plt.axis('Off') plt.axes().set_aspect('equal') plt.title("Barnsley Fern") plt.savefig("barnsley_fern.png") plt.show()

Hits: 0