Reference articles on history, science, culture and more
Encyclopedia

Shoelace formula

Mathematical algorithm for calculating area of a simple polygon

Image credit is listed at the end of this article.

The shoelace formula, also known as Gauss's area formula and the surveyor's formula, is a mathematical algorithm to determine the area of a simple polygon whose vertices are described by their Cartesian coordinates in the plane. It is called the shoelace formula because of the constant cross-multiplying for the coordinates making up the polygon, like threading shoelaces. It has applications in surveying and forestry, among other areas.

The formula was described by Albrecht Ludwig Friedrich Meister (1724-1788) in 1769 and is based on the trapezoid formula which was described by Carl Friedrich Gauss and C.G.J. Jacobi. The triangle form of the area formula can be considered to be a special case of Green's theorem.

The area formula can also be applied to self-overlapping polygons since the meaning of area is still clear even though self-overlapping polygons are not generally simple. Furthermore, a self-overlapping polygon can have multiple "interpretations" but the Shoelace formula can be used to show that the polygon's area is the same regardless of the interpretation.

01The polygon area formulas

Given: A planar simple polygon with a positively oriented (counterclockwise) sequence of points P_{i}=(x_{i},y_{i}),i=1,\dots ,n in a Cartesian coordinate system.
For the simplicity of the formulas below it is convenient to set P_{0}=P_{n},P_{n+1}=P_{1}.

The formulas:
The area of the given polygon can be expressed by a variety of formulas, which are connected by simple operations (see below):
If the polygon is negatively oriented, then the result A of the formulas is negative. In any case |A| is the sought area of the polygon.

Trapezoid formula

The trapezoid formula sums up a sequence of oriented areas A_{i}={\tfrac {1}{2}}(y_{i}+y_{i+1})(x_{i}-x_{i+1}) of trapezoids with P_{i}P_{i+1} as one of its four edges (see below): {\begin{aligned}A&={\frac {1}{2}}\sum _{i=1}^{n}(y_{i}+y_{i+1})(x_{i}-x_{i+1})\\&={\frac {1}{2}}{\Big (}(y_{1}+y_{2})(x_{1}-x_{2})+\cdots +(y_{n}+y_{n+1})(x_{n}-x_{n+1}){\Big )}\end{aligned}}

Triangle formula

The triangle formula sums up the oriented areas A_{i} of triangles OP_{i}P_{i+1}: {\begin{aligned}B&={\frac {1}{2}}\sum _{i=1}^{n}(x_{i}y_{i+1}-x_{i+1}y_{i})={\frac {1}{2}}\sum _{i=1}^{n}{\begin{vmatrix}x_{i}&x_{i+1}\\y_{i}&y_{i+1}\end{vmatrix}}={\frac {1}{2}}\sum _{i=1}^{n}{\begin{vmatrix}x_{i}&y_{i}\\x_{i+1}&y_{i+1}\end{vmatrix}}\\&={\frac {1}{2}}{\Big (}x_{1}y_{2}-x_{2}y_{1}+x_{2}y_{3}-x_{3}y_{2}+\cdots +x_{n}y_{1}-x_{1}y_{n}{\Big )}\end{aligned}}

Shoelace formula

The triangle formula is the base of the popular shoelace formula, which is a scheme that optimizes the calculation of the sum of the 2×2-determinants by hand: {\begin{aligned}2A&={\begin{vmatrix}x_{1}&x_{2}\\y_{1}&y_{2}\end{vmatrix}}+{\begin{vmatrix}x_{2}&x_{3}\\y_{2}&y_{3}\end{vmatrix}}+\cdots +{\begin{vmatrix}x_{n}&x_{1}\\y_{n}&y_{1}\end{vmatrix}}\\[10mu]&={\begin{vmatrix}x_{1}&x_{2}&x_{3}\cdots &x_{n}&x_{1}\\y_{1}&y_{2}&y_{3}\cdots &y_{n}&y_{1}\end{vmatrix}}\end{aligned}}

Sometimes this determinant is transposed (written vertically, in two columns), as shown in the diagram.

Other formulas

{\begin{aligned}A&={\frac {1}{2}}\sum _{i=1}^{n}y_{i}(x_{i-1}-x_{i+1})\\&={\frac {1}{2}}{\Big (}y_{1}(x_{n}-x_{2})+y_{2}(x_{1}-x_{3})+\cdots +y_{n}(x_{n-1}-x_{1}){\Big )}\end{aligned}} A={\frac {1}{2}}\sum _{i=1}^{n}x_{i}(y_{i+1}-y_{i-1})

Exterior algebra

A particularly concise statement of the formula can be given in terms of the exterior algebra. Let \mathbf {v} _{1},\mathbf {v} _{2},\dots ,\mathbf {v} _{n} be the consecutive vertices of the polygon. The Cartesian coordinate expansion of the outer product with respect to the standard ordered orthonormal plane basis (\mathbf {x} ,\mathbf {y} ) gives \mathbf {v} _{i}\wedge \mathbf {v} _{i+1}=(x_{i}y_{i+1}-x_{i+1}y_{i})\;\mathbf {x} \wedge \mathbf {y} and the oriented area is given as follows. A={\frac {1}{2}}\sum _{i=1}^{n}v_{i}\wedge v_{i+1}={\frac {1}{2}}\sum _{i=1}^{n}(x_{i}y_{i+1}-x_{i+1}y_{i})\;\mathbf {x} \wedge \mathbf {y} Note that the area is given as a multiple of the unit area \mathbf {x} \wedge \mathbf {y}.

Basic idea: Any polygon edge determines the signed area of a trapezoid. All these areas sum up to the polygon area.
Basic idea: Any polygon edge determines the signed area of a trapezoid. All these areas sum up to the polygon area.
Example
Example

02Example

For the area of the pentagon with {\begin{aligned}&P_{1}=(1,6),P_{2}=(3,1),P_{3}=(7,2),\\[5pt]&P_{4}=(4,4),P_{5}=(8,5)\end{aligned}} one gets {\begin{aligned}2A&={\begin{vmatrix}1&3\\6&1\end{vmatrix}}+{\begin{vmatrix}3&7\\1&2\end{vmatrix}}+{\begin{vmatrix}7&4\\2&4\end{vmatrix}}+{\begin{vmatrix}4&8\\4&5\end{vmatrix}}+{\begin{vmatrix}8&1\\5&6\end{vmatrix}}\\[5pt]&=(1-18)\;+(6-7)\;+(28-8)\;+(20-32)\;+(48-5)=33\\[5pt]A&=16.5\end{aligned}}

The advantage of the shoelace form: Only 6 columns have to be written for calculating the 5 determinants with 10 columns.

Horizontal shoelace form for the example.
Horizontal shoelace form for the example.

03Deriving the formulas

Trapezoid formula

The edge P_{i},P_{i+1} determines the trapezoid (x_{i},y_{i}),(x_{i+1},y_{i+1}),(x_{i},0),(x_{i+1},0) with its oriented area

A_{i}={\tfrac {1}{2}}(y_{i}+y_{i+1})(x_{i}-x_{i+1})

In case of x_{i}<x_{i+1} the number A_{i} is negative, otherwise positive or A_{i}=0 if x_{i}=x_{i+1}. In the diagram the orientation of an edge is shown by an arrow. The color shows the sign of A_{i}: red means A_{i}<0, green indicates A_{i}>0. In the first case the trapezoid is called negative in the second case positive. The negative trapezoids delete those parts of positive trapezoids, which are outside the polygon. In case of a convex polygon (in the diagram the upper example) this is obvious: The polygon area is the sum of the areas of the positive trapezoids (green edges) minus the areas of the negative trapezoids (red edges). In the non convex case one has to consider the situation more carefully (see diagram). In any case the result is A=\sum _{i=1}^{n}A_{i}={\frac {1}{2}}\sum _{i=1}^{n}(y_{i}+y_{i+1})(x_{i}-x_{i+1})

Triangle form, determinant form

Eliminating the brackets and using {\textstyle \sum _{i=1}^{n}x_{i}y_{i}=\sum _{i=1}^{n}x_{i+1}y_{i+1} (see convention P_{n+1}=P_{1} above), one gets the determinant form of the area formula: A={\frac {1}{2}}\sum _{i=1}^{n}(x_{i}y_{i+1}-x_{i+1}y_{i})={\frac {1}{2}}\sum _{i=1}^{n}{\begin{vmatrix}x_{i}&x_{i+1}\\y_{i}&y_{i+1}\end{vmatrix}} Because one half of the i-th determinant is the oriented area of the triangle O,P_{i},P_{i+1} this version of the area formula is called triangle form.

Other formulae

With {\textstyle \sum _{i=1}^{n}x_{i}y_{i+1}=\sum _{i=1}^{n}x_{i-1}y_{i}\ (see convention P_{0}=P_{n},P_{n+1}=P_{1} above) one gets 2A=\sum _{i=1}^{n}(x_{i}y_{i+1}-x_{i+1}y_{i})=\sum _{i=1}^{n}x_{i}y_{i+1}-\sum _{i=1}^{n}x_{i+1}y_{i}=\sum _{i=1}^{n}x_{i-1}y_{i}-\sum _{i=1}^{n}x_{i+1}y_{i} Combining both sums and excluding y_{i} leads to A={\frac {1}{2}}\sum _{i=1}^{n}y_{i}(x_{i-1}-x_{i+1}) With the identity {\textstyle \sum _{i=1}^{n}x_{i+1}y_{i}=\sum _{i=1}^{n}x_{i}y_{i-1} one gets A={\frac {1}{2}}\sum _{i=1}^{n}x_{i}(y_{i+1}-y_{i-1})

Alternatively, this is a special case of Green's theorem with one function set to 0 and the other set to x, such that the area is the integral of xdy along the boundary.

Deriving the trapezoid formula
Deriving the trapezoid formula

04Manipulations of a polygon

A(P_{1},\dots ,P_{n}) indicates the oriented area of the simple polygon P_{1},\dots ,P_{n} with n\geq 4 (see above). A is positive/negative if the orientation of the polygon is positive/negative. From the triangle form of the area formula or the diagram below one observes for 1<k<n: A(P_{1},\dots ,P_{n})=A(P_{1},\dots ,P_{k-1},P_{k+1},\dots ,P_{n})+A(P_{k-1},P_{k},P_{k+1}) In case of k=1\;{\text{or}}\;n one should first shift the indices.

Hence:

  1. Moving P_{k} affects only A(P_{k-1},P_{k},P_{k+1}) and leaves A(P_{1},...,P_{k-1},P_{k+1},...,P_{n}) unchanged. There is no change of the area if P_{k} is moved parallel to {\overline {P_{k-1}P_{k+1}}}.
  2. Purging P_{k} changes the total area by A(P_{k-1},P_{k},P_{k+1}), which can be positive or negative.
  3. Inserting point Q between P_{k},P_{k+1} changes the total area by A(P_{k},Q,P_{k+1}), which can be positive or negative.

Example:

P_{1}=(3,1),P_{2}=(7,2),P_{3}=(4,4),
P_{4}=(8,6),P_{5}=(1,7),\ Q=(4,3)

With the above notation of the shoelace scheme one gets for the oriented area of the

  • blue polygon: A(P_{1},P_{2},P_{3},P_{4},P_{5})={\tfrac {1}{2}}{\begin{vmatrix}3&7&4&8&1&3\\1&2&4&6&7&1\end{vmatrix}}=20.5
  • green triangle: A(P_{2},P_{3},P_{4})={\tfrac {1}{2}}{\begin{vmatrix}7&4&8&7\\2&4&6&2\end{vmatrix}}=-7
  • red triangle: A(P_{1},Q,P_{2})={\tfrac {1}{2}}{\begin{vmatrix}3&4&7&3\\1&3&2&1\end{vmatrix}}=-3.5
  • blue polygon minus point P_{3}: A(P_{1},P_{2},P_{4},P_{5})={\tfrac {1}{2}}{\begin{vmatrix}3&7&8&1&3\\1&2&6&7&1\end{vmatrix}}=27.5
  • blue polygon plus point Q between P_{1},P_{2}: A(P_{1},Q,P_{2},P_{3},P_{4},P_{5})={\tfrac {1}{2}}{\begin{vmatrix}3&4&7&4&8&1&3\\1&3&2&4&6&7&1\end{vmatrix}}=17

One checks, that the following equations hold: A(P_{1},P_{2},P_{3},P_{4},P_{5})=A(P_{1},P_{2},P_{4},P_{5})+A(P_{2},P_{3},P_{4})=20.5 A(P_{1},P_{2},P_{3},P_{4},P_{5})+A(P_{1},Q,P_{2})=A(P_{1},Q,P_{2},P_{3},P_{4},P_{5})=17

Triangle form: The color of the edges indicate, which triangle area is positive (green) and negative (red) respectively.
Triangle form: The color of the edges indicate, which triangle area is positive (green) and negative (red) respectively.

05Generalization

In higher dimensions the area of a polygon can be calculated from its vertices using the exterior algebra form of the Shoelace formula (e.g. in 3d, the sum of successive cross products):A={\frac {1}{2}}\left\|\sum _{i=1}^{n}v_{i}\wedge v_{i+1}\right\|(when the vertices are not coplanar this computes the vector area enclosed by the loop, i.e. the projected area or "shadow" in the plane in which it is greatest).

This formulation can also be generalized to calculate the volume of an n-dimensional polytope from the coordinates of its vertices, or more accurately, from its hypersurface mesh. For example, the volume of a 3-dimensional polyhedron can be found by triangulating its surface mesh and summing the signed volumes of the tetrahedra formed by each surface triangle and the origin:V={\frac {1}{6}}\left\|\sum _{F}v_{a}\wedge v_{b}\wedge v_{c}\right\|where the sum is over the faces and care has to be taken to order the vertices consistently (all clockwise or anticlockwise viewed from outside the polyhedron). Alternatively, an expression in terms of the face areas and surface normals may be derived using the divergence theorem (see Polyhedron § Volume).

Proof

Apply the divergence theorem to the vector field \mathbf {v} (x,y,z)=(x,y,z) and the polyhedron P with boundary \partial P consisting of triangular faces F_{i}:

\nabla \cdot \mathbf {v} ={\frac {\partial \mathbf {v} }{\partial x}}+{\frac {\partial \mathbf {v} }{\partial y}}+{\frac {\partial \mathbf {v} }{\partial z}}=3 So {\frac {1}{3}}\int _{P}\nabla \cdot \mathbf {v} \,dV=V(P)

For each triangular face F with vertices v_{1},v_{2},v_{3}, denote the outward normal vector by \mathbf {n}, denote the area by A.

\mathbf {n} A=(v_{3}-v_{2})\wedge (v_{1}-v_{2}) is the normal vector of F with magnitude A.

The flux of \mathbf {v} through F is \int _{F}\mathbf {v} \cdot \mathbf {n} \,dA

For each point (x,y,z) on F, \mathbf {v} (x,y,z)\cdot \mathbf {n} is the projection of the vector (x,y,z) onto the unit normal vector \mathbf {n}, which is the height h of the tetrahedron formed by v_{1},v_{2},v_{3} and (0,0,0). So the integrand is constant h on F.

\int _{F}\mathbf {v} \cdot \mathbf {n} \,dA=A\cdot h=\pm {\frac {1}{2}}\|v_{1}\wedge v_{2}\wedge v_{3}\|

where \|v_{1}\wedge v_{2}\wedge v_{3}\| is 6×the volume of the tetrahedron formed by v_{1},v_{2},v_{3} and (0,0,0). The sign of the pseudoscalar value v_{1}\wedge v_{2}\wedge v_{3} represents the orientation of our area, and needs to be taken into account to calculate the total flux.

The total flux is the sum of the fluxes through all faces:

V(P)={\frac {1}{3}}\int _{\partial P}\mathbf {v} \cdot \mathbf {n} \,dA={\frac {1}{6}}\left\|\sum _{F}v_{1}\wedge v_{2}\wedge v_{3}\right\|

Manipulations of a polygon
Manipulations of a polygon
Watch videos about Shoelace formulaExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Shoelace formula, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.