Borrowing from Ohn (1999)1 and shortening the notation, it seems that a convex shape on a hexagonal grid can be produced by proceeding in the first of six directions an integer distance $e_0$, turning right by 60° and proceeding a distance $e_1$ and repeating to produce the six-tuple $e_0, e_1, e_2, e_3, e_4, e_5$ such that you return to the starting position.
Figure 3. Example HCSE (hexagonal convex structuring element) P. The chain code of the boundary of P is 051324334552 starting with point $S$.
If as shown in the image below ($e_0, e_1, e_2, e_3, e_4, e_5 = 5, 3, 4, 3, 5, 2$) the directions $\hat{x}$ and $\hat{y}$ form an acute 60° angle with $e_3$ counted in the $\hat{x}$ direction and $e_2$ counted in the $\hat{y}$ direction, and assuming we start at position (0, 0), the final position will be given by.
$$x=-e_0 - e_1 + e_3 + e_4$$ $$y=e_1 + e_2 - e_4 - e_5$$
If I want to generate all convex shapes with maximum side length $n_{max}$ (counting all six rotations of a given shape as distinct), I can first generate all six-tuples with $0 \le e_i \le n_{max}$ then keep only those that represent closed paths, i.e. that satisfy
$$e_0 + e_1 = e_3 + e_4$$ $$e_1 + e_2 = e_4 + e_5$$
If I don't want to consider the sixfold rotations of a shape as distinct, I (think that I) can discard any six-tuple that is a cyclic permutation of a previous six-tuple.
I can imagine how to reconstruct all of the lattice points on the perimeter2, but I don't know how to find all of the lattice points inside as well.
Question: Find all points in a closed convex shape drawn on a hexagonal lattice using chain codes (lengths of sides)
In other words, I want to plot all the filled circles (occupied lattice points) shown in the image, not just the $n = e_0 + e_1 + e_2 + e_3 + e_4 + e_5$ points on the edge.
1Syng-Yup Ohn (1999) Optimal Decomposition of Convex Structuring Elements on a Hexagonal Grid The Jourmal of the Acoustical Society of Korea, Vol. 18. No. 3E
2For the example these would be $(0, 0), (-1, 0), (-2, 0), (-3, 0), (-4, 0), (-5, 0), (-6, 1), (-7, 2)... (-2, 4), (-1, 3), (0, 2), (0, 1)$
