Mathematics and crochet might not appear the most likely pairing for most people. However, crocheting is an inherently mathematical process. You can create various shapes using stitches with different heights and increasing or decreasing the number of stitches in certain places. Crochet also makes it possible to create many shapes that are very difficult to make with any other technique. One can crochet shapes such as the Klein bottle and Seifert surfaces of knots in freestyle, without following exact instructions, since these surfaces do not have a strict shape. A Klein bottle can be short and wide or tall and narrow. But there are many surfaces, for example spheres and disks, that have a specific shape. To crochet such models, you need crochet instructions, and to create such instructions, you need a good understanding of the underlying mathematical model.

The idea of knitting or crocheting mathematical or scientific models is not new, though it has not been used very widely. The Scottish chemist Alexander Crum Brown knitted several interlinked surfaces to visualize the ideas presented in the late nineteenth century in his paper “On a Case of Interlacing Surfaces” [2]. Miles Reid wrote a paper on knitting mathematical surfaces in the 1970s [13] that inspired several new patterns, including a Möbius scarf and a Klein bottle. The crocheted hyperbolic surfaces were introduced by Daina Taimina in 1997 [5], and her idea led to a bloom of so-called hyperbolic crochet. A few years after the paper on hyperbolic crochet appeared, Hinke Osinga and Bernd Krauskopf described how to crochet an approximation of the Lorenz manifold [10]. See also [14] for further examples of mathematical crochet.

Both the hyperbolic plane and the Lorenz manifold require precise crochet instructions. The hyperbolic plane has constant negative Gaussian curvature, and so it looks the same at every point. This allows for a rather simple pattern that can be worked in rounds in which after a few setup rounds, every nth stitch is doubled. The Lorenz manifold is a less-regular surface, and it requires a much more complex pattern of stitches. The model is also worked in rounds, but unlike the hyperbolic surface, it requires detailed instructions on when to add or remove stitches. It takes full advantage of the versatility of crocheting, requiring three different types of stitches, which allows different parts of a round to have different heights. In this paper we consider Bour’s minimal surfaces \({\mathcal{B}}_m\), which are “crochet symmetric,” allowing for simple crochet instructions (excluding possible intersections) and requiring only one type of stitch, with the added or removed stitches evenly spaced across a round.

Minimal Surfaces

Minimal surfaces can be considered a mathematical generalization of soap film surfaces. If you dip a wire frame into soapy water, the surface thereby created is optimal in the sense that it minimizes the surface area bounded by the frame. In mathematics, minimal surfaces are defined as surfaces that locally minimize their area. They are allowed to self-intersect and do not have to have a boundary. In general, minimal surfaces do not provide a minimum for the surface area globally.

The early study of minimal surfaces was rather theoretical. Joseph-Louis Lagrange considered in his 1761 paper [7] the problem of finding a surface z(xy) of least area given a closed boundary. He stated that such minimal surfaces can be locally expressed as the graph of a solution of the minimal surface equation

$$ \left( {1 + z_{x}^{2} } \right)z_{{yy}} - 2z_{x} z_{y} z_{{xy}} + \left( {1 + z_{y}^{2} } \right)z_{{xx}} = 0,$$

but the only concrete example he provided was the plane. Joseph Plateau published his experimental observations on minimal surfaces obtained as soap films bounded by various wires in 1873 [11]. His work gave a clear physical interpretation of the problem and helped to spread its study beyond mathematics. As a result, the problem of proving the existence of a minimal surface given a boundary became known as Plateau’s problem. Only special cases of the problem were solved prior to the early 1930s, when the general case was solved independently by Jesse Douglas [3] and Tibor Radó [12].

Before the nineteenth century, only two nontrivial minimal surfaces were known: the catenoid, discovered by Leonhard Euler in 1744, and the helicoid, described by Jean Baptiste Meusnier in 1776. Meusnier also showed that the catenoid satisfies Lagrange’s condition and gave a geometric interpretation of the minimal surface equation, noting that it is equivalent to the surface having vanishing mean curvature [8]. The first general approach to finding minimal surfaces was introduced by Karl Weierstrass in 1866 [15]. This representation allows for the construction of minimal surfaces based on an integral of a holomorphic and meromorphic function. The analytical representation of minimal surfaces using holomorphic coordinates was independently formulated by Alfred Enneper a few years prior to the publication of Weierstrass’s representation (though published in 1868 [4]), which is why this method of constructing minimal surfaces is often called the Weierstrass–Enneper representation.

The Weierstrass–Enneper equations of a minimal surface are

$$\begin{aligned} x(\zeta )&= \text {Re}\int f(\zeta )(1-g^2(\zeta ))\,d\zeta,\\ y(\zeta )&= \text {Re}\int i f(\zeta )(1+g^2(\zeta ))\,d\zeta,\\ z(\zeta )&= \text {Re}\int 2f(\zeta )g(\zeta )\,d\zeta, \end{aligned}$$

where f and g, known as the Weierstrass–Enneper data of the minimal surface, are a holomorphic and a meromorphic function respectively. In this paper we consider minimal surfaces that are intrinsically surfaces of revolution determined by the Weierstrass–Enneper data

$$\begin{aligned} f(\zeta ) = C\zeta ^{m-2}\quad \text {and} \quad g(\zeta )=\zeta , \end{aligned}$$
(1)

where \(m\in{\mathbb{R}}\). We denote these surfaces by \({\mathcal{B}}_m\) after Edmond Bour, who studied them in his paper [1]; see also [16]. Choosing \(m=0\) and \(C=1\) in (1) produces the catenoid, while the choice \(m=0\) and \(C=i\) leads to the right helicoid.

Figure 1.
figure 1

To crochet an accurate \({\mathcal{B}}_m\) surface, we need to calculate the circumference of a circle centered at the origin (red) with an intrinsic radius \(R=\ell \cdot H\) (blue), where H is the height of a stitch and \(\ell \in\mathbb{N}_+\) is the number of the round.

If we assume that \(C=1\), \(m\in{\mathbb{R}}\setminus \{-1,0,1\}\) and set \(\zeta = r e^{i\theta }\), we can rewrite the above as

$$\begin{aligned} x(r,\theta ) & = \frac{r^{m-1}}{m-1}\cos ((m-1)\theta ) - \frac{r^{m+1}}{m+1}\cos ((m+1)\theta ),\\ y(r,\theta ) & = -\frac{r^{m-1}}{m-1}\sin ((m-1)\theta ) - \frac{r^{m+1}}{m+1}\sin ((m+1)\theta ),\\ z(r,\theta ) & = \frac{2r^m}{m}\cos (m\theta ). \end{aligned}$$
(2)

Bour’s paper was published in 1862, a couple of years before the Weierstrass–Enneper representation, and he defined the surfaces in the coordinates r and \(\theta \). Notice that the catenoid and helicoid cannot be represented in the above form, since they corresponded to the Weierstrass–Enneper data with \(m=0\). Choosing \(m=2\), \(m=1/2\), or \(m=3\), we get the classical Enneper, Richmond, and Bour surfaces respectively; see Figure 1. All three are special cases of the Bour surfaces \({\mathcal{B}}_m\), but the Enneper surface, and its Weierstrass–Enneper data, were first considered in more detail by Alfred Enneper in 1864, and the Richmond surface was studied by Herbert William Richmond in 1904. The Bour surface \({\mathcal{B}}_3\) is often simply referred to as the Bour minimal surface. For a comprehensive introduction to minimal surfaces, see, e.g., [9].

We will see in the next section that the first fundamental form of the Bour minimal surfaces is rotationally symmetric, meaning that the \({\mathcal{B}}_m\) are intrinsically surfaces of revolution. This means that the length of a line segment on the surface does not depend on the angle \(\theta \), which allows for calculating simple crochet instructions in which only one type of stitch is required and the added or removed stitches can be spaced evenly on a round. See below (and the supplementary material) for crochet instructions for the classical Enneper surface and [6] for a customized stitch count.

Calculating Crochet Instructions for \({\mathcal{B}}_m\) Surfaces

Before moving to calculating crochet instructions for the Bour minimal surfaces, let us see how to crochet a simple flat disk. Denote the height of a crochet stitch by H and the width by W. Then the radius of the crocheted disk will always be \(H\cdot \ell \), with \(\ell \in\mathbb{N}_+\) denoting the number of the round. Since a circle of radius R drawn in the Euclidean plane has circumference \(2\pi R\), the circumference of a crocheted disk on round \(\ell \) should be \(2\pi ( H\cdot \ell )\), and the number of stitches required to achieve this is \(2\pi ( H\cdot \ell )/W\), rounded to the nearest integer. If you use a single crochet stitch, its width and height are approximately the same, and since \(2\pi \approx 6\), we get the usual instruction to start with six stitches in a loop and to add six stitches evenly spaced on every round. The general formula of adding \(2\pi H/W\) stitches allows you to easily check the correct number of stitches needed for any type of stitch. We can also calculate how to create a perfect estimate of a sphere or hyperbolic plane using the knowledge of the circumference of circles in spherical and hyperbolic geometry. For more on hyperbolic crochet, see [5, 14].

The plane, sphere, and hyperbolic plane have constant curvature, which means that the circumference of a circle is the same regardless of the location of its center. However, the crochet models we consider grow in rounds around a fixed central point, and so we need to be able to calculate the circumference of a circle only around this point. An especially interesting set of candidates for crocheting are the “crochet symmetric” surfaces, which can be created with one type of stitch with increases and decreases evenly spaced on every round. This allows for simple crochet instructions in which only the number of stitches per round needs to be stated. A simple example of such a surface is the family of surfaces of revolution. Unfortunately, the catenoid is the only minimal surface that is a surface of revolution. The \({\mathcal{B}}_m\) surfaces are only intrinsically surfaces of revolution, but as we will see, this is enough to enable simple crochet patterns, at least until there are intersections.

To determine the required number of stitches per round, we need to calculate the circumference of the circle centered at the origin with intrinsic radius \(R=\ell \cdot H\). By intrinsic radius we mean a geodesic—a shortest path between two points—on the surface. This process can be split into two steps:

  • Calculate the circumference of a circle as a function of the variable r used in (2).

  • Determine r as a function of the intrinsic radius R.

In the first step, we need to determine the arc length of the red curve in Figure 1 as a function of r, which is given by

$$\begin{aligned} C(r) = \int _{0}^{2\pi } \sqrt{x_\theta (r,\theta )^2 + y_\theta (r,\theta )^2 + z_\theta (r,\theta )^2} \ d \theta, \end{aligned}$$

where \(x_\theta (r,\theta )={\partial x(r,\theta )}/{\partial \theta }\) is the derivative of \(x(r,\theta )\) with respect to \(\theta \). From (2), we get

$$\begin{aligned} x_\theta (r,\theta )&= -r^{m-1}\sin \big ((m-1)\theta \big )+r^{m+1}\sin \big ((m+1)\theta \big),\\ y_\theta (r,\theta )&= r^{m-1}\cos \big ((m-1)\theta \big )+r^{m+1}\cos \big ((m+1)\theta \big ),\\ z_\theta (r,\theta )&= -2r^m\sin (m\theta ). \end{aligned}$$

Setting \(h=h(r,\theta )=(x(r,\theta ),y(r,\theta ),z(r,\theta ))\), we have

$$\begin{aligned} \|h_\theta\|_2^2 &= r^{2(m-1)} + r^{2(m+1)}\\ &\quad +2r^{2m}\Big(\cos((m-1)\theta)\cos\big((m+1)\theta\big)\\ &\qquad\qquad\quad -\sin((m-1)\theta)\sin\big((m+1)\theta\big)\Big)\\ & \quad +4r^{2m}\sin^2(m\theta)\\ &= r^{2(m-1)} + r^{2(m+1)}+2r^{2m}\cos(2m\theta)+4r^{2m}\sin^2(m\theta)\\ &= (r^{m-1}+r^{m+1})^2\,, \end{aligned}$$

where we have used the trigonometric identities

$$\begin{aligned} \cos^2(\theta)+\sin^2(\theta)&=1\,,\\ \cos(\theta)\cos(\phi)-\sin(\theta)\sin(\phi)&=\cos(\theta+\phi)\,,\\\cos(2\theta)&=1-2\sin^2(\theta)\,.\end{aligned}$$

. We conclude that the circumference of the red circle in Figure 1 is

$$\begin{aligned} C(r) = \int _0^{2\pi }\Vert h_\theta (r,\theta )\Vert _2\ d\theta = 2\pi \left(r^{m-1}+r^{m+1}\right). \end{aligned}$$

Notice that \(\Vert h_\theta \Vert _2\) does not depend on the angle \(\theta \), which means that the arc length between \(\theta _1\) and \(\theta _2\) depends only on \(|\theta _1-\theta _2|\). This allows us to spread the increases or decreases evenly on every round.

Since we crochet along the intrinsic radius R instead of r, we also need to solve the arc length of the blue curve in Figure 1. This is given by

$$\begin{aligned} R(\tilde{r},\theta ) = \int _{0}^{\tilde{r}} \sqrt{x_r(r,\theta )^2 + y_r(r,\theta )^2 + z_r(r,\theta )^2} \, dr, \end{aligned}$$
(3)

where \(x_r(r,\theta )={\partial x(r,\theta )}/{\partial r}\) denotes the derivative of \(x(r,\theta )\) with respect to r. For the Bour minimal surfaces \({\mathcal{B}}_m\), we have

$$\begin{aligned} x_r(r,\theta )&= r^{m-2}\cos ((m-1)\theta )-r^{m}\cos \big ((m+1)\theta \big ),\\ y_r(r,\theta )&= -r^{m-2}\sin ((m-1)\theta )-r^{m}\sin \big ((m+1)\theta \big ),\\ z_r(r,\theta )&= 2r^{m-1}\cos (m\theta ). \end{aligned}$$

Using the same trigonometric identities as before, we see that the arc length does not depend on \(\theta \):

$$\begin{aligned} R(\tilde{r},\theta )&= R(\tilde{r})\\&= \int _0^{\tilde{r}} r^{m-2}+r^{m}\,dr\\&= \frac{\tilde{r}^{m-1}}{m-1}+\frac{\tilde{r}^{m+1}}{m+1}. \end{aligned}$$

This means that we can create the model using only one type of stitch with height H. To determine the number of required stitches on a round \(\ell \), we first need to solve r as a function of \(R=\ell \cdot H\). Generally, this has to be done numerically. We then calculate the circumference of a circle with intrinsic radius \(\ell \cdot H\) and divide it by the width of a stitch W, that is, the number of required stitches on the round \(\ell \) is \(2\pi (r(\ell )^{m-1}+r(\ell )^{m+1})/W\), rounded to the nearest integer.

Above, we considered the circumference of circles centered at zero. However, we can infer something more general for the Bour minimal surfaces. The first fundamental form of a surface is the family of inner products on the tangent spaces induced by the Euclidean inner product on \(\mathbb {R}^3\). If we consider the surface \({\mathcal{B}}_m\) given by \(h(r,\theta )=(x(r,\theta ),y(r,\theta ),z(r,\theta ))\), the coefficients of the first fundamental form are

$$\begin{aligned} E_m&=\langle h_r, h_r\rangle = (r^{m-2}+r^m)^2,\\ F_m&=\langle h_r,h_\theta \rangle = 0,\\ G_m&=\langle h_\theta ,h_\theta \rangle = (r^{m-1}+r^{m+1})^2. \end{aligned}$$

The first fundamental form completely describes the metric properties of a surface, such as the curvature, length, and area. Notice that the first fundamental form of \({\mathcal{B}}_m\) does not depend on \(\theta \). This means that the length of any line segment does not depend on the angle of its position. Also, since \(F_m=0\), the Gaussian curvature is simply given by

$$\begin{aligned} K_m = -\frac{1}{2\sqrt{E_mG_m}}\frac{\partial }{\partial r}\Bigg (\frac{\frac{\partial }{\partial r}G_m}{\sqrt{E_mG_m}}\Bigg ) = -\frac{4r^{2(2-m)}}{(1+r^2)^4}, \end{aligned}$$

and we see that the curvature at a given point depends only on how far the point is from the origin.

Enneper Surfaces

If we choose \(m=(k+1)/k\), with \(k\in\mathbb{N}_+\), in (2), we obtain the family of Enneper surfaces with order-\((k+1)\) symmetry. See Figure 2 for a crocheted Enneper surface with order-2 symmetry. The Enneper surfaces are often expressed in a simpler form that can be obtained with the Weierstrass–Enneper data \(f(\zeta )=1\) and \(g(\zeta )=\zeta ^{n-1}\), \(\zeta = \tau e^{i\varphi }\), leading to

$$\begin{aligned} x(\tau ,\varphi ) &= \tau \cos (\varphi ) - \frac{\tau ^{2n-1}}{2n-1}\cos \big ((2n-1)\varphi \big ),\\ y(\tau ,\varphi ) &= \tau \sin (\varphi ) + \frac{\tau ^{2n-1}}{2n-1}\sin \big ((2n-1)\varphi \big ),\\ z(\tau ,\varphi ) &= \frac{2\tau ^n}{n}\cos (n\varphi ), \end{aligned}$$
(4)

where \(\tau \ge 0\), \(\varphi \in [0,2\pi ]\), and \(n\in\mathbb{N}\), \(n\ge 2\), is the order of symmetry. Notice that with \(n=1\), the representation (4) produces a flat disk, which is a trivial minimal surface. In the following analysis we consider the original parametrization (2) with \(r\ge 0\) and \(\theta \in [0,2k\pi ]\).

Figure 2.
figure 2

Two views of a self-intersecting Enneper surface.

Figure 3.
figure 3

Stitches before the intersection in black; stitches in the “inner” and “outer” sections after the intersection in red and blue respectively.

For small r, the Enneper surface with order-2 symmetry looks like a saddle, but as r grows, the surface begins to intersect itself. To crochet a model with intersections, we will have to take a closer look at where the intersection occurs at every round.

The surface first intersects itself at the point \(x=y=0\) and \(\theta =0\) (or \(\theta =\pi \)). From this, we see that the first intersection occurs when \(r=\sqrt{3}\). As r grows, we see that the surface has four smaller sections that begin to grow, plotted in red in Figure 3, and four larger sections that become smaller in comparison, shown in blue. The crossing angle \(\theta _\textrm{cr}\) satisfies \(x(r,\theta )=x(r,\pi -\theta )\), that is,

$$\begin{aligned}&r\cos (\theta )-\frac{r^3}{3}\cos (3\theta ) = r\cos (\pi -\theta )-\frac{r^3}{3}\cos (3(\pi -\theta ))\\&\quad \Leftrightarrow \cos (\theta ) = \frac{r^2}{3}(4\cos ^3(\theta )-3\cos (\theta ))\\&\quad \Leftrightarrow \theta = \cos ^{-1}\Bigg (\frac{\sqrt{3}}{2}\sqrt{1+\frac{1}{r^2}}\Bigg ), \end{aligned}$$

where we have used \(\cos (3\theta )=4\cos ^3(\theta )-3\cos (\theta )\). Using this and the fact that the arc length depends only on \(|\theta _1-\theta _2|\), we get that the arc length of an “inner” section is \(2\theta _\textrm{cr}(r^{m-1}+r^{m+1})\), and the arc length of an “outer” section is \((\pi /2-2\theta _\textrm{cr})(r^{m-1}+r^{m+1})\). Notice that the intersection does not happen along a straight line (compare with the surface \({\mathcal{B}}_3\) considered above), and some stitches move from the “outer” section to the “inner” section. This is especially visible right after the intersection occurs. The boundary of the “inner” section will become longer than that of the “outer” section when \(r>\sqrt{3\left(1+\sqrt{2}\right)}\approx 2.69\). We can, of course, scale (2) to get different-sized models requiring different numbers of stitches. See below for instructions on crocheting your own Enneper surface up to the intersection and the supplementary material for instructions for a model with intersections. You can find Python code for calculating different-sized models in [6].

Richmond Surfaces

The choice of \(m = k/(k+1)\), with \(k\in\mathbb{N}_+\), in (2) leads to the family of Richmond surfaces with order-k symmetry. The family of Richmond surfaces can also be expressed by the Weierstrass–Enneper data \(f(\zeta )=\zeta ^{-2}\) and \(g(\zeta )=\zeta ^{k+1}\), \(\zeta = \tau e^{i\varphi }\), which leads to a somewhat cleaner presentation:

$$\begin{aligned} x(\tau ,\varphi ) & = -\frac{\cos (\varphi )}{\tau }-\frac{\tau ^{2k+1}}{2k+1}\cos ((2k+1)\varphi ),\\ y(\tau ,\varphi ) & = -\frac{\sin (\varphi )}{\tau }-\frac{\tau ^{2k+1}}{2k+1}\sin ((2k+1)\varphi ),\\ z(\tau ,\varphi ) & = \frac{2\tau ^k}{k}\cos (k\varphi ), \end{aligned}$$
(5)

where \(\tau >0\), \(\varphi \in [0,2\pi ]\), and \(k\in\mathbb{N}_+\). We will again use the parametrization (2), with \(r>0\) and \(\theta \in [0,2(k+1)\pi ]\) in the analysis below, but (5) is to be recommended for plotting the surface. Richmond surfaces are sometimes called planar Enneper surfaces, because they have one Enneper surface-like self-intersecting end in the middle, while the other end stretches out like the plane. We consider models with \(r\in [r_1,r_2]\). Choosing a smaller \(r_1\) allows the planar edge to stretch further, whereas a larger \(r_2\) creates a bigger intersection area in the middle. Notice that the Weierstrass–Enneper data of the Richmond surfaces with \(k=0\) give a catenoid, though it cannot be represented using (2) or (5).

From a crocheting point of view, Richmond surfaces have two types of self-intersections. We will consider the simplest model with \(k=1\). There are two larger “outer” sections similar to the Enneper surface and two smaller “inner” sections, and the surface first intersects when \(r=\sqrt{3}\). The Enneper-type intersection angle can be calculated from \(y(r,2\pi -\theta )=y(r,2\pi +\theta )\), which leads to

$$\begin{aligned} \theta _\text {cr}= 2\sin ^{-1}\Bigg (\frac{\sqrt{3}}{2}\sqrt{1+\frac{1}{r^2}}\Bigg ). \end{aligned}$$

Additionally, the surface intersects itself on the straight line \(x=0\), creating a much more complex crochet pattern. Since the Richmond surface grows in two directions, there is no uniquely best place to start the model. Removing crochet stitches usually yields a less-tidy appearance than adding them, so starting from the shortest round and crocheting in the two directions separately is one option.

Bour’s Minimal Surface \({{\mathcal{B}}_3}\)

The last surface we consider is the Bour minimal surface \({\mathcal{B}}_3\) with \(r\in [0,1]\) and \(\theta \in [0,2\pi ]\). The Bour surface \({\mathcal{B}}_3\) intersects itself on three rays that meet at equal angles at the origin. The rays partition the surface into six equal-sized parts. Three of these parts are above the plane spanned by the rays, and three are below it. Notice that unlike the Enneper and Richmond surfaces, this model consists of six equal parts divided by straight lines, and so stitches do not move from one part to another, which makes the model easy to crochet after a few setup rounds (Figure 4).

Figure 4.
figure 4

Crocheted Richmond (left) and Bour (right) minimal surfaces.

Crochet Instructions for the Enneper Surface

You need only some basic crocheting skills to make your own Enneper surface. The needed techniques are magic loop, single stitch, slip stitch, and increase. You can use either the traditional single crochet stitch or the split stitch (aka waistcoat stitch) for a smoother and more rigid surface. If you are a beginner, it is recommended to begin with the traditional single crochet stitch, since the split stitch is more challenging. You can find many excellent videos online introducing the main crocheting techniques.

Figure 5.
figure 5

Enneper surface with twofold symmetry crocheted to just before the intersection.

For this project it is best to use a yarn that does not stretch a lot and a crochet hook that is a bit smaller than recommended for the weight to obtain a tighter gauge. The models shown in this paper were created using 10-ply (50 grams \(\approx \) 75 m) cotton yarn with a 3 mm crochet hook using the split stitch. You should make a test tube to measure the height and width of your stitches. Notice that the model is crocheted in rounds, so a tube gives you more accurate measurements than a traditional swatch. The model is quite sensitive to an incorrect stitch size, so try to be as consistent as possible. You can find instructions for three different stitch heights in Table 1. All the models require a bit over 1500 stitches to complete, and the finished model is about 13 cm wide. Using a thicker (thinner) yarn while keeping the height-to-width ratio the same as in Table 1 creates a bigger (smaller) model.

Table 1 The number added stitches \(\Delta N\) and the number of stitches N at round \(\ell \) for models with gauge \(W=0.5\) cm and \(H=0.4\) cm, \(H=0.45\) cm, or \(H=0.5\) cm. All the models require a little more than 1500 stitches to complete.

Below, you can find detailed instructions, in addition to Table 1, for crocheting the Enneper surface with gauge \( W=0.5\) cm and \( H=0.45\) cm up to an intersection, as shown in Figure 5. The other models are worked in a similar manner.

To begin the model, make a magic loop, crochet six stitches into it, and close the round with a slip stitch. On the next round, \(\ell =2\), make two stitches into each stitch from the first round, and close the round with a slip stitch. Continue the model according to Table 1, always spacing the indicated number of added stitches evenly on the round. When possible, you should offset your increases so they are not stacked on top of each other. You can also crochet in continuous rounds; just remember to mark the start of the round. Finishing the last round will be slightly less tidy if you use continuous rounds, but the technique helps you to avoid any seams that might appear when the rounds are closed with a slip stitch. When you get to the last round, you can crochet a thin plastic cable (e.g., transparent trimmer line) into the model. This will help your Enneper surface hold its shape. After you have finished the last round, divide the model into four parts, and using a piece of yarn, tie the opposing quarters together, making sure that each of the four sections has 48 stitches. Weave off the ends, and your model is finished.

As mentioned above, the model is quite sensitive to a wrong gauge. If the edge of your model does not curve enough to meet at the last round, this is because, perhaps a bit counterintuitively, your stitches are too high (or equivalently, your stitches are too narrow). Taller stitches mean that on round \(\ell \), the radius of the resulting circle is larger, while the circumference stays the same (assuming fixed width), leading to a less curved model. Similarly, if it appears that there is no room for the last round, this is because your stitches are too short, resulting in a too curvy model.