A = (2.598076211353316, 2.5)
B = (-3.4641016151377544, 4)
C = (-3.4641016151377544, -4)
D = (-0.8660254037844386, -1.5)
E = (1.7320508075688772, -3)
F = (3.4641016151377544, -2)
G = (0.8660254037844386, -0.5)
pol, a, b, c, d, e, f, g = Polygon(A, B, C, D, E, F, G)
vértices: {A, B, C, D, E, F, G}
n = Length(vértices)
minX = Min(Sequence[2.0 * x(Element[vértices, s]) / sqrt(3.0), s, 1.0, n])
maxX = Max(Sequence[2.0 * x(Element[vértices, s]) / sqrt(3.0), s, 1.0, n])
minY = Min(Sequence[y(Element[vértices, s]), s, 1.0, n])
maxY = Max(Sequence[y(Element[vértices, s]), s, 1.0, n])
candidatos = Join(Sequence[Sequence[(t * sqrt(3.0) / 2.0, s + Mod[t, 2.0] / 2.0), t, minX, maxX], s, minY, maxY])
cerrado = Join({vértices, First[vértices]})
ang = Sequence(Sequence[Angle[Element[cerrado, i], Element[candidatos, s], Element[cerrado, i + 1.0]] / °, i, 1.0, n], s, 1.0, Length[candidatos])
angConSigno = Sequence(Sequence[If[Element[Element[ang, s], i] > 180.0, Element[Element[ang, s], i] - 360.0, Element[Element[ang, s], i]], i, 1.0, n], s, 1.0, Length[ang])
maxAng = Sequence(Max[Element[angConSigno, s]], s, 1.0, Length[ang])
orden = Sequence(Div[Sum[Element[angConSigno, s]], 360.0], s, 1.0, Length[ang])
interior = RemoveUndefined(Sequence[If[Defined[Element[orden, s]] ∧ (Element[orden, s] ≠ 0.0) ∧ (Element[maxAng, s] ≠ 180.0), Element[candidatos, s]], s, 1.0, Length[candidatos]])
borde = RemoveUndefined(Sequence[If[Element[maxAng, s] ≟ 180.0, Element[candidatos, s]], s, 1.0, Length[candidatos]])