3.7 Parametrization of Geometric Figures

The Doric column we just created has a fixed location and a fixed size, making it difficult to use this function in different contexts. Naturally, this function would be much more useful if it was parametrized, i.e., if the creation of the column depended on the parameters that characterize it, as for example, the column’s base coordinates, the height of the echinus, shaft, and abacus, the base and top echinus radius, etc.

In order to better understand the parametrization of these functions, let us start by considering the shaft represented in this figure.

Sketch of a column’s shaft.

image

The first step in parametrizing a geometrical drawing is to correctly identify the relevant parameters. In the case of the shaft, one of the obvious parameters would be its spatial location. Let us then consider that the shaft will have its base’s center point placed at an imaginary point \(P\) of coordinates \((x,y)\). In addition to this parameter, we also need know the height of the shaft \(h\), the base radius \(r_b\) and the top radius \(r_t\).

To make the drawing process easier, it is convenient to consider additional reference points in our sketch. For the shaft, since it is shaped essentially like a trapezoid, we can look at its representation as a succession of line segments along the points \(P_1\), \(P_2\), \(P_3\) and \(P_4\), whose coordinates we can easily calculate from \(P\).

We now have all we need to define a function that draws the column’s shaft. To make the program clearer, we will use the names h_shaft for the height \(h\), r_base for the base radius, and r_top for the top radius. The parametrized definition will be:

shaft(p, h_shaft, r_base, r_top) =

  polygon(p+vxy(-r_top, h_shaft),

          p+vxy(-r_base, 0),

          p+vxy(+r_base, 0),

          p+vxy(+r_top, h_shaft))

Next, we need to draw the echinus. It is convenient to consider, once more, a geometrical sketch, as shown in this figure.

Sketch of an echinus.

image

Similarly to the shaft, considering the base’s center point \(P\), we can compute the coordinates that define the vertices of the echinus representation. Using those points, the function will be:

echinus(p, h_echinus, r_base, r_top) =

  polygon(p+vxy(-r_base, 0),

          p+vxy(-r_top, h_echinus),

          p+vxy(+r_top, h_echinus),

          p+vxy(+r_base, 0))

Having done the shaft and echinus, all that is left now is to draw the abacus. For that, we can consider another geometric sketch, as shown in this figure.

Sketch of an abacus.

image

Once more, we will consider \(P\) as the starting point in the center of the abacus’ base. From this point, we can easily calculate the points \(P_1\) and \(P_2\), which are the two opposite corners of the rectangle that represents the abacus. That way, we have:

abacus(p, h_abacus, l_abacus) =

  rectangle(p+vxy(-(l_abacus/2), 0), p+vxy(l_abacus/2, h_abacus))

Finally, to create the entire column, we must combine the functions that draw the shaft, the echinus and the abacus. However, we need to take into account that, as this figure shows, the shaft’s top radius is coincident with the echinus’ base radius, and the echinus top radius is half the length of the abacus. The figure also shows that the coordinates of the echinus’ base result from adding the shaft’s height to the coordinates of the shaft’s base, and that those of the abacus’s base result from adding the combined heights of the shaft and echinus to the shaft’s base coordinates.

Composition of the shaft, echinus and abacus.

image

As we did before, let us give more appropriate names to the parameters in this figure. Using the names p, h_shaft, r_base_shaft, h_echinus, r_base_echinus, h_abacus and l_abacus instead of the corresponding, \(P\), \(h_s\), \(r_{bs}\), \(h_e\), \(r_{be}\), \(h_a\) and \(l_a\), we obtain:

column(p, h_shaft, r_base_shaft, h_echinus, r_base_echinus, h_abacus, l_abacus) =

  begin

    shaft(p, h_shaft, r_base_shaft, r_base_echinus)

    echinus(p+vxy(0, h_shaft), h_echinus, r_base_echinus, l_abacus/2)

    abacus(p+vxy(0, h_shaft+h_echinus), h_abacus, l_abacus)

  end

Using this function we can easily explore different variations of columns. The following expressions reproduce the examples in this figure.

column(xy(0, 0), 9, 0.5, 0.4, 0.3, 0.3, 1.0)

column(xy(3, 0), 7, 0.5, 0.4, 0.6, 0.6, 1.6)

column(xy(6, 0), 9, 0.7, 0.5, 0.3, 0.2, 1.2)

column(xy(9, 0), 8, 0.4, 0.3, 0.2, 0.3, 1.0)

column(xy(12, 0), 5, 0.5, 0.4, 0.3, 0.1, 1.0)

column(xy(15, 0), 6, 0.8, 0.3, 0.2, 0.4, 1.4)

Multiple Doric columns.

image

As we can see, not all columns obey the proportion’s canon of the Doric order. In the section Vitruvian Proportions, we are going to see which modifications are needed to avoid this problem.