How to make my code to generate polytopes more efficient?
Maybe you will find this a bit more elegant:
ClearAll[F, f];
M = Developer`ToPackedArray[{{2, -1, 0}, {-1, 2, -1}, {0, -1, 2}}];
f[x_?VectorQ] := KroneckerProduct[{1, 1, 1}, x] - x M;
F[list_?MatrixQ] := Union[list, Union @@ (f /@ list)];
DoItAll[a_, b_, c_] := FixedPoint[F, Developer`ToPackedArray[{{a, b, c}}]]
Usage example:
DoItAll[1, 2, 3] == Union @@ (orb2 @@@ orb2[1, 2, 3])
True