Finding Brillouin zones: A visual guide.

2010 Jul 08

Square lattice

A square lattice.

square_lattice

Connect origin to random point and take the perpendicular bisector. This is a bragg plane (line).

perpendicular_bisector1

Repeat for most points nearby.

perpendicular_bisector2

This is what it looks like after a while.

many_bragg_planes

Connect the origin to a random region. Each time you cross a line (bragg plane), you are in a new (+1) brillouin zone.

planes_to_zones

These are the first four brillouin zones for the square lattice.

4_brillouin_zones

First four brillouin zones, zoomed.

zoom_4_brillouin_zones

Hexagonal lattice

A hexagonal lattice.

hexagonal_lattice

Bragg planes of the hexagonal lattice.

bragg_planes_hexagonal

First four brillouin zones.

4_brillouin_zones_hexagonal

First four brillouin zones, zoomed.

4_brillouin_zones_hexagonal_zoomed

Code for diagrams

Diagrams made in asymptote:

size(8cm,0);
unitsize(1cm,1cm);
import geometry;

pair O=(0,0);
pair a, mid;

line l,lp;

dot(O,blue);

int N = 5;

fill((-N,-N)--(-N,N)--(N,N)--(N,-N)--cycle,white);

// Lattice and bragg planes.
for (int i=-N; i<=N; ++i) {
    for (int j=-N; j<=N; ++j) {
        a = (i,j);
        if (a == O) continue;
        dot(a);
        l = line(O,a);
        mid=(O+a)/2.;
        lp = perpendicular(mid,l);
        draw(lp,lightblue+0.3);
    }
}

// 1st  brillouin zone for  square lattice.
filldraw((0.5,0.5)--(-0.5,0.5)--(-0.5,-0.5)--(0.5,-0.5)--cycle, lightgrey);

// 2nd brillouin zone for square lattice.
filldraw((0.5,0.5)--(1,0)--(0.5,-0.5)--cycle,lightgreen,black+0.2);
filldraw((0.5,-0.5)--(0,-1)--(-0.5,-0.5)--cycle,lightgreen,black+0.2);
filldraw((-0.5,-0.5)--(-1,0)--(-0.5,0.5)--cycle,lightgreen,black+0.2);
filldraw((-0.5,0.5)--(0,1)--(0.5,0.5)--cycle,lightgreen,black+0.2);

dot(O,blue);

// Example plane.
a = (1,5);
draw(O--a,Arrow);
l = line(O,a);

mid=(O+a)/2.;
dot(mid,red);
lp = perpendicular(mid,l);

draw(lp,blue);