Phyllotaxis pattern in Python?

Phyllotaxis is the arrangement of leaves, flowers, or seeds on a plant stem following mathematical patterns found in nature. This pattern creates beautiful spirals similar to those seen in sunflowers, pine cones, and nautilus shells, based on the golden angle of approximately 137.5 degrees.

Understanding Phyllotaxis

The phyllotaxis pattern is closely related to the Fibonacci sequence (1, 1, 2, 3, 5, 8, 13, 21...), where each number is the sum of the two preceding ones. In nature, plants use this mathematical principle to maximize sunlight exposure and optimize space utilization.

Fibonacci Sequence in Nature Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... Golden Angle: 137.508° ? 360° × (1 - 1/?) Spiral Pattern

Creating a Phyllotaxis Pattern with Python Turtle

We can simulate this natural pattern using Python's turtle graphics. The key is positioning elements using polar coordinates with the golden angle ?

import math
import turtle

def phyllotactic_pattern(num_elements, petal_start, angle=137.508, size=2, spread=4):
    """Create a phyllotactic pattern using turtle graphics"""
    # Set up turtle
    turtle.pen(outline=1, pencolor="black", fillcolor="orange")
    turtle.speed(0)
    turtle.shape("circle")
    
    # Convert angle to radians
    phi = angle * (math.pi / 180.0)
    center_x, center_y = 0.0, 0.0
    
    # Create spiral pattern
    for n in range(num_elements):
        # Calculate position using polar coordinates
        r = spread * math.sqrt(n)
        theta = n * phi
        
        # Convert to cartesian coordinates
        x = r * math.cos(theta) + center_x
        y = r * math.sin(theta) + center_y
        
        # Move turtle to position
        turtle.penup()
        turtle.goto(x, y)
        turtle.pendown()
        turtle.setheading(n * angle)
        
        # Draw petals or center dots
        if n > petal_start - 1:
            draw_petal(x, y)
        else:
            turtle.stamp()

def draw_petal(x, y):
    """Draw a petal shape at given coordinates"""
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.begin_fill()
    turtle.pen(outline=1, pencolor="black", fillcolor="yellow")
    
    # Create petal shape
    turtle.right(25)
    turtle.forward(100)
    turtle.left(45)
    turtle.forward(100)
    turtle.left(140)
    turtle.forward(100)
    turtle.left(45)
    turtle.forward(100)
    turtle.end_fill()

# Set up screen and run pattern
turtle.bgcolor("white")
phyllotactic_pattern(200, 160, 137.508, 4, 10)
turtle.exitonclick()

How the Algorithm Works

The algorithm uses these key mathematical concepts ?

Component Formula Purpose
Radius r = spread × ?n Distance from center
Angle ? = n × 137.508° Angular position
X Position x = r × cos(?) Horizontal coordinate
Y Position y = r × sin(?) Vertical coordinate

Simplified Version

Here's a simpler version that creates just the spiral points ?

import math
import turtle

def simple_spiral(points=100):
    """Create a simple phyllotaxis spiral"""
    turtle.speed(0)
    turtle.penup()
    
    for i in range(points):
        # Calculate position
        angle = i * 137.508
        radius = 5 * math.sqrt(i)
        
        # Move to position and draw dot
        x = radius * math.cos(math.radians(angle))
        y = radius * math.sin(math.radians(angle))
        turtle.goto(x, y)
        turtle.dot(5, "green")

turtle.bgcolor("white")
simple_spiral(150)
turtle.exitonclick()

Applications and Variations

You can modify the pattern by changing parameters ?

  • Angle − Different angles create different spiral patterns
  • Spread − Controls how tightly packed the elements are
  • Colors − Use different colors for artistic effects
  • Shapes − Replace dots with custom shapes or images

Conclusion

Phyllotaxis patterns demonstrate how mathematics governs natural beauty. Using Python turtle graphics, we can recreate these fascinating spirals by applying the golden angle and polar coordinate mathematics found throughout nature.

Updated on: 2026-03-25T05:37:19+05:30

478 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements