mirzabeig dynamical system Mar 6, 2026

A technical artist named Mirza Beig discovered a neat little dynamical system by accident, and posted about it online in august of 2023.

I became slightly obsessed with this and reverse-engineered the math from that video. I didn't discover much more than that, but the system continues to fascinate me.

Pseudocode

    parameters: real angle A, integer N
    
    foreach Point in Rectangle(x=0, y=0, width=1, height=1):
        loop N times:
            Point ← rotate Point by A around the origin
            Point.x ← Point.x mod 1
            Point.y ← Point.y mod 1
        draw Point

A ranges from 0 to 2*pi.
N is the number of iterations, and is something like 100 or 1000.

Visualizations

I made some videos, sweeping the angle. They are a little flashy, so be careful if that's a problem for you.

- points colored by starting position, and drawn at their ending positions
- points drawn at their starting positions, and colored by ending position

Questions

Why do these patterns appear?
What can be said about them?

Generalization

The system can be generalized in a way that connects it with the julia/mandelbrot fractals:

    parameters: real M, real angle A, point C0, Bounds, integer N, rectangle View

    if C0 is not none:
        C ← C0
        
    foreach Point in View:
        if C0 is none:
            C ← Point
            Point ← (0, 0)

        loop N times:
            Point ← raise Point to power M (as a complex number)
            Point ← rotate Point by A around the origin
            Point ← wrap (Point + C) according to Bounds

        draw Point

Raising a point to a power P

in polar coordinates:
    Point.angle ← Point.angle * P
    Point.magnitude ← raise Point.magnitude to power P

Generalization parameters

Mirzabeig parameters:
    M = 1
    A = 0 to 2*pi
    C = (0, 0)
    Bounds = (mod 1, mod 1)
    View = Rectangle(x=0, y=0, width=1, height=1)

Mandelbrot parameters:
    M = 2
    A = 0
    C = none
    Bounds = none
    View = Rectangle(x=-2, y=-1, width=3, height=2)

Julia parameters:
    M = 2
    A = 0
    C = any point (points near the boundary of the mandelbrot set will be the most interesting)
    Bounds = none
    View = Rectangle(x=-1.5, y=-1.5, width=3, height=3)


mirzabeig dynamical system

all writing, chronological
previous: the individual, the group, and the body of god