Isogonal hexagons.
Version of Wednesday 8 February 2023.
Dave Barber's other pages.

See also the same author's examination of a related topic, with an exploration of artistic options. This page by contrast emphasizes the algebraic aspects.


§1 Introduction. A polygon is isogonal (or equiangular) if all its angles are equal, and equilateral if all its sides are equal. A polygon might satisfy either criterion or neither, but a polygon that satisfies both is regular.

Examined in this report are hexagons that are isogonal, but not necessarily equilateral; they are termed iso_hexes. Because of isogonality, each of the six angles must be 120 degrees. With opposite sides being parallel, such a figure qualifies as a generalized parallelogram.

With a gain in convenience and no loss of generality, the examples given here limit the lengths of sides to the nonnegative integers. Among the advantages is that the interior of the iso_hex can be partitioned into equilateral triangles, as in figure one on the right. This adds clarity.

figure one
a, b, c, d, e, f ⟨ 7, 1, 4, 5, 3, 2 ⟩

In the images, the letter a typically designates the bottom side of the iso_hex, or the length of that side. Proceeding counterclockwise, the remaining sides are b, c, d, e and f. They can be written as an ordered sextuple within shallow angle brackets (HTML ⟨ ⟩). When multiple iso_hexes are being treated, subscript notation is often helpful. The sides of iso_hex Pn are written an, bn, cn, etc.

An iso_hex is said to be variegated if all the sides are of different lengths. Variegated iso_hexes usually make the best examples for educational purposes, as a reader will have fewer opportunities to make mistakes in interpreting them.

The functions max(P) and min(P) deliver respectively the largest and smallest of P's six elements.


§2 Essential contraints. Certain useful values come from algebraic relations that are necessitated by isogonality. Their values are, in a sense, overall width or height measured in various directions.

value relation
ad_flats b + c = e + f
be_flats c + d = f + a
cf_flats a + b = d + e
ad_corners f + 2a + b = c + 2d + e
be_corners a + 2b + c = d + 2e + f
cf_corners b + 2c + d = e + 2f + a
two important consequences
e = a + bd
f = c + da

Suppose that an iso_hex is to be constructed, with no maximum limit on the lengths of its sides. If a, b and c are selected arbitrarily, then d must satisfy the first three constraints in the table below. If there is a further limitation that all six sides are to be less than or equal to some nonnegative integer m, all six rows of the table apply.

rowconstraintpurpose
1 d ≥ 0
2 da + b e ≥ 0
3 dac f ≥ 0
4 dm
5 da + bm em
6 dac + m fm

One value for d that always satisfies the constraints is d = a.


§3 Notations. Because e and f are consequential to a, b, c, and d, an expression like ⟨ a, b, c, d ⟩ unambiguously implies ⟨ a, b, c, d, e, f ⟩. Similarly, ⟨ 7, 1, 4, 5 ⟩ implies ⟨ 7, 1, 4, 5, 3, 2 ⟩. Three more abbreviations are adopted by convention for periodic iso_hexes:

Seven unit constants are defined for convenience:

U100 = ⟨ 1, 0, 0 ⟩   U10 = ⟨ 1, 0 ⟩   U1 = ⟨ 1 ⟩
U010 = ⟨ 0, 1, 0 ⟩ U01 = ⟨ 0, 1 ⟩ U0 = ⟨ 0 ⟩
U001 = ⟨ 0, 0, 1 ⟩


§4 Lexicographic ordering. For the purposes of organizing large sets of iso_hexes, a lexicographic comparison can be defined. Given P1 and P2:

Elements en and fn need not be examined for comparison, because if the respective an, bn, cn, and dn are equal, so must be the en and fn.


§5 Some arithmetic. Iso_hexes are capable of arithmetic.

Addition is in parallel. If P3 = P1 + P2, then

Subtraction is analogous to addition, as long as no number in the remainder is negative. Definition: for any integer k ≥ max(P), an additive inverse of P is ⟨ k ⟩ − P.

Multiplication by a nonnegative integer k is element by element. If P2 = P1 × k, then

Multiplication in parallel of two iso_hexes, analogous to addition, does not work. For example, ⟨ 5, 3, 2, 7, 1, 4 ⟩ × ⟨ 1, 3, 5, 3, 1, 7 ⟩ would have been ⟨ 5, 9, 10, 21, 1, 28 ⟩. However, 5 + 9 ≠ 21 + 1, so the result is not an iso_hex.


§6 Split and merge. If an iso_hex P has at least one side whose length is zero, it has a unique split, which is a particular decomposition into addends. Specifically, there will assuredly exist these five unique nonnegative integers:

h, i, j, k, l

such that:

P = U10 × h + U01 × i + U100 × j + U010 × k + U001 × l

If no side of P is zero, an ambiguity arises because U1 = U10 + U01 = U100 + U010 + U001. However, the problem can be fixed. If P has no zero element, then introduce g = min(P). Now any iso_hex P can have a unique split:

P = U1 × g + U10 × h + U01 × i + U100 × j + U010 × k + U001 × l

(Related is the topic of linear combination.)

In the way that the sides of an iso_hex can be written between angle brackets, its split values can be written between square brackets:

[ g, h, i, j, k, l ]

Because split is a one-to-one operation, it has an inverse operation termed merge. Hence merge (split (P)) = P.


The splits discussed so far are proper:

As expected, addition of splits is defined in parallel:

[ g1, h1, i1, j1, k1, l1 ] + [ g2, h2, i2, j2, k2, l2 ]
equals
[ g1 + g2, h1 + h2, i1 + i2, j1 + j2, k1 + k2, l1 + l2 ]

The sum of proper splits is not necessarily proper. For instance, there might fail to be a zero element.

An improper sum of two proper splits can always be laundered into propriety. Improper splits from other sources may or may not be launderable. The laundry procedure is to perform a merge on the improper split, yielding a possible iso_hex. If that iso_hex is valid, it can be split returning a proper result. Example:

  1. S1 = [ −1, 2, 4, 3, 5, 1 ] is an improper split because there is a negative number, and there are no zeros.
  2. However, the merge operation will unambiguously produce this iso_hex: ⟨ 4, 8, 2, 6, 6, 4 ⟩.
  3. Which in turn can be split into the following, which is proper: S2 = [ 2, 0, 2, 2, 4, 0 ].

One can say that S1 and S2 are equivalent, because they produce the same iso_hex.

Note that an improper split with negative numbers might yield an iso_hex which itself contains negative numbers, so that the laundering attempt fails. However, if all the numbers within an improper split are nonnegative, then laudering will succeed.


§7 More arithmetic.

Recall iso_hex addition from §5, and split addition from §6. With iso_hexes P1 and P2, observe that:

P1 + P2 = merge (split (P1) + split (P2))

Suppose the multiplication of two splits is defined as term by term:

[ g1 × g2, h1 × h2, i1 × i2, j1 × j2, k1 × k2, l1 × l2 ]

Then a multiplication of two iso_hexes can be defined as this:

P1 × P2 = merge (split (P1) × split (P2))

Whether this kind of multiplication will be useful is an open question, because a proper split contains at least two zeroes, which when multiplied erase information. Still, this operation does conform to a criterion that is usually expected of any operation called multiplication. Given two nonnegative integers k1 and k2:

(P1 × k1) × (P2 × k2) = (P1 × P2) × (k1 × k2)

In other words, the output is proportional to each input individually.


§8 Census. A formula for the number of small triangles (the census) in an iso_hex is:

(a + b + c)2a2c2e2

Many other formulas will give the same answer, but it is difficult to find a convenient expression that offers anything close to symmetry in the six sides.

Here is a derivation. It is easy to show that when the overall shape of an iso_hex is a triangle, as with ⟨ n, 0 ⟩ or ⟨ 0, n ⟩, its census must be n2. To go further and find the census of any other iso_hex (green in the example of figure two), append triangles (red) to three non-adjacent sides. Find the census of the overall triangle, and subtract the censuses of the appended triangles: (6 + 4 + 5)2 − 62 − 52 − 72.

figure two
⟨ 6, 4, 5, 3, 7, 2 ⟩ ⟨ 0, 7 ⟩, ⟨ 0, 5 ⟩, ⟨ 0, 6 ⟩

The purpose of explaining the census calculation is one reason why sides of length zero are permitted. Sometimes, however, they are not very useful. If at least two adjacent sides are zero, the iso_hex will be flat and have a census of zero, as in figure three.

figure three
⟨ 0, 0, 3 ⟩ ⟨ 0, 3, 0 ⟩ ⟨ 3, 0, 0 ⟩ ⟨ 0 ⟩

By contrast, figure four shows examples of the four cases where non-consecutive side(s) of length zero produce nondegenerate iso_hexes.

figure four
⟨ 5, 0, 3, 4, 1, 2 ⟩ ⟨ 7, 0, 3, 4, 3, 0 ⟩ ⟨ 5, 0, 4 ⟩ ⟨ 4, 0 ⟩

Researchers may differ in whether to declare iso_hex ⟨ 0 ⟩, which arguably contains one point, to be the same thing as no iso_hex at all.

Any use for a side whose length is less than zero is not apparent.


§9 Rotations, reflections. An iso_hex can be rotated and reflected as shown in figure five, which is on a separate page due to its size.

Lexicographic order plays a role here. If iso_hex P is less than or equal to all of its rotations, then P is said to be in canonical form. This is useful in standardizing the notation of iso_hexes when their orientation does not matter.

If iso_hex P is less than or equal to all of its rotations and reflections, then P is said to be in bicanonical form.


§10 How many. The table below shows how many iso_hexes exist for various maxima, with variegation required or not. Some entries have a link to listing of all the iso_hexes.

variegation not required   variegation required
maxquantity of iso_hexeslist maxquantity of iso_hexeslist
0 1list 5 24 2 × 12list
1 10list 6 108 9 × 12list
2 45list 7 300 25 × 12list
3 136list 8 636 53 × 12
4 325list 9 1,224 102 × 12
5 66610 2,100 175 × 12
6 1,22511 3,396 283 × 12
7 2,08012 5,184 432 × 12
8 3,32113 7,620 635 × 12
9 5,0501410,776 898 × 12
10 7,3811514,8681,239 × 12
1110,4401619,9681,664 × 12
1214,3651726,3162,193 × 12
1319,3061834,0202,835 × 12
m (m4 + 4m3 + 7m2 + 6m + 2) ÷ 2 general formula unknown
OEIS A037270
has an equivalent formula