Close-packing
Close-packing of spheres is the arranging of an infinite lattice of spheres so that they take up the greatest possible fraction of an infinite 3-dimensional space.  Carl Friedrich Gauss proved that the highest average density that can be achieved by a regular lattice arrangement is \frac{\pi}{3\sqrt 2} \simeq 0.74048. The Kepler conjecture states that this is the highest density that can be achieved by any arrangement of spheres, either regular or irregular.
There are two regular lattices that achieve this highest average density. They are called face-centered cubic (FCC) and hexagonal close-packed (HCP), based on their symmetry. Both are based upon sheets of spheres arranged at the vertices of a triangular tiling; they differ in how the sheets are stacked upon one another.  In both arrangements each sphere has twelve neighbors.  For every sphere there is one gap surrounded by six spheres (octahedral) and two smaller gaps surrounded by four spheres (tetrahedral).
Relative to a reference layer with positioning A, two more positionings B and C are possible. Every sequence of A, B, and C without immediate repetition of the same one is possible and gives an equally dense packing for spheres of a given radius.
The most regular ones are
- HCP = ABABABA
- FCC = ABCABCA
In close-packing, the center-to-center spacing of spheres in the xy plane is a simple honeycomb-like tessellation with a pitch (distance between sphere centers) of one sphere diameter. The distance between sphere centers parallel to the z axis is:
where d is the diameter of a sphere; this follows from the tetrahedral arrangement of close-packed spheres.
Many crystal structures are based on a close-packing of atoms, or of large ions with smaller ions filling the spaces between them.  The cubic and hexagonal arrangements are very close to one another in energy, and it may be difficult to predict which form will be preferred from first principles.
The coordination number of HCP and FCC is 12 and its atomic packing factor (APF) is the number mentioned above, 0.74.

# Lattice Generation
When forming any sphere-packing lattice, the first fact to notice is that whenever two spheres touch a straight line may be drawn from the center of one sphere to the center of the other intersecting the point of contact. The distance between the centers along the shortest path namely that straight line will therefore be (r_{1}+r_{1}). Where r_{1} is the radius of the first sphere and r_{1} is the radius of the second. In close packing all of the spheres share a common radius, r. Therefore two centers would simply have a distance 2r.

## Simple HCP Lattice
To form an A-B-A-B-... Hexagonal Close Packing of spheres, the coordinate points of the lattice will be the spheres' centers. Suppose, the goal is to fill a box with spheres according to HCP. The box would be placed on the x-y-z coordinate space so that all of its volume and surface was non-negative, thus all of the spheres' volumes and surfaces would be non-negative.
First form a row of spheres. The centers will all lie on a straight line. Their x-coordinate will vary by 2r since the distance between each center if the spheres are touching is 2r. The y-coordinate and z-coordinate will be the same. For simplicity, say that the balls are the first row and that their y and z-coordinates are simply r, so that their surfaces rest on the zero-planes. Coordinates of the centers of the first row will look like (2r,r,r), (4r,r,r), (6r,r,r), (8r,r,r),\dots The sphere centered at x = 0 is immediately omitted because part of the sphere would lie outside.
Now, form the next row of spheres. Again, the centers will all lie on a straight line with x-coordinate differences of 2r, but their will be a shift of distance r in the x direction so that the center of every sphere in this row aligns with the x-coordinate of where two spheres touch in the first row. This allows the spheres of the new row to slide in closer to the first row until all spheres in the new row are touching two spheres of the first row. Since the new spheres touch two spheres, their centers form an equilateral triangle with those two neighbors' centers. The side lengths are all 2r, so the height or y-coordinate difference between the rows is \sqrt{3}r. Thus, this row will have coordinates like this: (r,r+\sqrt{3}r,r), (3r,r+\sqrt{3}r,r), (5r,r+\sqrt{3}r,r), (7r,r+\sqrt{3}r,r),\dots The first sphere of this row only touches one sphere in the original row, but its location follows suit with the rest of the row.
The next row follows this pattern of shifting the x-coordinate by r and the y-coordinate by \sqrt{3}. Add rows until reaching the x and y maximum borders of the box.
In an A-B-A-B-... stacking pattern, the odd numbered planes of spheres will have exactly the same coordinates save for a pitch difference in the z-coordinates and the even numbered planes of spheres will share the same x and y -coordinates. Both types of planes are formed using the pattern mentioned above, but the starting place for the first row's first sphere will be different.
Using the plane described precisely above as plane #1, the A plane, place a sphere on top of this plane so that it lies touching three spheres in the A-plane. The three spheres are all already touching each other, forming an equilateral triangle, and since the all touch the new sphere, the four centers form a regular tetrahedron. All of the sides are equal to 2r because all of the sides are formed by two spheres touching. The height of which or the z-coordinate difference between the two "planes" is\sqrt{6}r2/3. This, combined with the offsets in the x and y-coordinates gives the centers of the first row in the B plane: (r,\sqrt{3}r/3,r+\sqrt{6}r2/3), (3r,\sqrt{3}r/3,r+\sqrt{6}r2/3), (5r,\sqrt{3}r/3,r+\sqrt{6}r2/3), (7r,\sqrt{3}r/3,r+\sqrt{6}r2/3),\dots  The second row's coordinates follow the pattern first described above and are: (2r,2\sqrt{3}r/3,r+\sqrt{6}r2/3), (4r,2\sqrt{3}r/3,r+\sqrt{6}r2/3), (6r,2\sqrt{3}r/3,r+\sqrt{6}r2/3), (8r,2\sqrt{3}r/3,r+\sqrt{6}r2/3),\dots 
The difference to the next plane, the A plane, is again \sqrt{6}r2/3 in the z-direction and a shift in the x and y to match those x and y coordinates of the first A plane.