Basic Examples

Create 20 points in a counter clock wise spiral starting in the eastern direction:
In[]:=
[◼]
LatticePointsArrangement
["CCWSpiralEast",20]
Out[]=
{{0,0},{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{2,-1},{2,0},{2,1},{2,2},{1,2},{0,2},{-1,2},{-2,2},{-2,1},{-2,0},{-2,-1}}

Scope

Create some points based on zigzagging diagonally in the first two quadrants:
In[]:=
pts=
[◼]
LatticePointsArrangement
["DiagonalZigZagEastQ12",100];
Visualize the points:
In[]:=
ListPlot[pts,JoinedTrue]
Out[]=
-5
5
2
4
6
8
LatticePointsArrangement
without any arguments returns all the possible arrangements:
In[]:=
arr=
[◼]
LatticePointsArrangement
[]
Out[]=
{CCWSpiralEast,CCWSpiralNorth,CCWSpiralWest,CCWSpiralSouth,CWSpiralEast,CWSpiralNorth,CWSpiralWest,CWSpiralSouth,CCWDiamondEast,CCWDiamondNorth,CCWDiamondWest,CCWDiamondSouth,CWDiamondEast,CWDiamondNorth,CWDiamondWest,CWDiamondSouth,ZigZagEastQ1,ZigZagNorthQ1,ZigZagWestQ2,ZigZagNorthQ2,ZigZagWestQ3,ZigZagSouthQ3,ZigZagEastQ4,ZigZagSouthQ4,ZigZagEastQ12,ZigZagWestQ12,ZigZagNorthQ23,ZigZagSouthQ23,ZigZagWestQ34,ZigZagEastQ34,ZigZagNorthQ14,ZigZagSouthQ14,ZigZagNorthEastQ12,ZigZagNorthWestQ12,ZigZagWestNorthQ23,ZigZagWestSouthQ23,ZigZagSouthEastQ34,ZigZagSouthWestQ34,ZigZagWestSouthQ14,ZigZagWestNorthQ14,ZigZagEastQ123,ZigZagSouthQ123,ZigZagNorthQ234,ZigZagEastQ234,ZigZagEastQ134,ZigZagNorthQ134,ZigZagEastQ124,ZigZagSouthQ124,ZigZagNorthWestQ123,ZigZagWestNorthQ123,ZigZagWestSouthQ234,ZigZagSouthWestQ234,ZigZagSouthEastQ134,ZigZagEastSouthQ134,ZigZagNorthEastQ124,ZigZagEastNorthQ124,ZigZagNorthEastQ123,ZigZagWestSouthQ123,ZigZagWestNorthQ234,ZigZagSouthEastQ234,ZigZagSouthWestQ134,ZigZagEastNorthQ134,ZigZagNorthWestQ124,ZigZagEastSouthQ124,DiagonalZigZagEastQ1,DiagonalZigZagNorthQ1,DiagonalZigZagNorthQ2,DiagonalZigZagWestQ2,DiagonalZigZagSouthQ3,DiagonalZigZagWestQ3,DiagonalZigZagEastQ4,DiagonalZigZagSouthQ4,DiagonalZigZagEastQ12,DiagonalZigZagSouthQ23,DiagonalZigZagNorthQ23,DiagonalZigZagEastQ34,DiagonalZigZagWestQ34,DiagonalZigZagNorthQ14,DiagonalZigZagWestQ12,DiagonalZigZagSouthQ14,DiagonalZigZagEastQ123,DiagonalZigZagSouthQ123,DiagonalZigZagNorthQ234,DiagonalZigZagEastQ234,DiagonalZigZagWestQ134,DiagonalZigZagNorthQ134,DiagonalZigZagWestQ124,DiagonalZigZagSouthQ124,CCWDiagonalQ1,CWDiagonalQ1,CCWDiagonalQ2,CWDiagonalQ2,CCWDiagonalQ3,CWDiagonalQ3,CWDiagonalQ4,CCWDiagonal4,CCWDiagonalQ12,CWDiagonalQ23,CCWDiagonalQ23,CWDiagonalQ34,CCWDiagonalQ34,CWDiagonalQ14,CWDiagonalQ12,CCWDiagonalQ14,CCWDiagonalQ123,CWDiagonalQ123,CCWDiagonalQ234,CWDiagonalQ234,CCWDiagonalQ134,CWDiagonalQ134,CCWDiagonalQ124,CWDiagonalQ124,CWCornerQ1,CCWCornerQ3,CWCornerQ2,CCWCornerQ4,CWCornerQ3,CCWCornerQ1,CWCornerQ4,CCWCornerQ2,CWCornerQ12,CCWCornerQ12,CCWCornerQ23,CWCornerQ23,CCWCornerQ34,CWCornerQ34,CCWCornerQ14,CWCornerQ14,CWCornerQ123,CCWCornerQ123,CWCornerQ234,CCWCornerQ234,CWCornerQ134,CCWCornerQ134,CWCornerQ124,CCWCornerQ124}
Currently 136 arrangements are known:
In[]:=
Length[arr]
Out[]=
136

Applications

Create the Ulam prime spiral:
In[]:=
pts=
[◼]
LatticePointsArrangement
["CCWSpiralEast",100000];​​Graphics[{PointSize[Small],Point[pts[[Prime[Range[1,PrimePi[Length[pts]]]]]]]}]
Out[]=

Neat Examples

Recreate the OEIS A316667 sequence of a horse moving on a spirally numbered board and moving to the lowest available unvisited square at each step:
In[]:=
ClearAll[ShowRoute,MakeMove,FindSequence]​​horsejump=Select[Tuples[Range[-2,2],2],Norm[#]
5
&];​​ShowRoute[output_Association]:=Module[{colors},​​colors=(ColorData["Rainbow"]/@Subdivide[Length[output["Coordinates"]]-1.0]);​​Graphics[{Line[output["Coordinates"],VertexColorscolors],Disk[Last@output["Coordinates"],0.2]}]​​]​​MakeMove[spiral_Association,visited_List]:=Module[{poss,hj},​​poss=Table[Last[Last[visited]]+hj,{hj,horsejump}];​​poss=DeleteMissing[{spiral[#],#}&/@poss,1,∞];​​poss=Select[poss,FreeQ[visited[[All,2]],Last[#]]&];​​If[Length[poss]>0,​​First[TakeSmallestBy[poss,First,1]]​​,​​Missing[]​​]​​]​​FindSequence[start_:{0,0},grid_]:=Module[{positions,j,next},​​positions={{grid[start],start}};​​PrintTemporary[Dynamic[j]];​​Do[​​next=MakeMove[grid,positions];​​If[next=!=Missing[],​​AppendTo[positions,next]​​,​​Break[];​​]​​,​​{j,∞}​​];​​<|"Coordinates"->positions[[All,2]],"Indices"->positions[[All,1]]|>​​]​​grid=
[◼]
LatticePointsArrangement
["CCWSpiralEast",10000];​​grid=Association[MapIndexed[#1->#2[[1]]&,grid]];​​ShowRoute[FindSequence[{0,0},grid]]
Out[]=