unitCell[bcc] = {AbsoluteThickness[2], GrayLevel[0.7], 
        Line[{{0, 0, 0}, {0, 0, 1}}], Line[{{0, 0, 0}, {0, 1, 0}}], 
        Line[{{0, 0, 0}, {1, 0, 0}}], Line[{{0, 0, 0}, {1, 1, 1}}], 
        Line[{{0, 0, 1}, {0, 1, 1}}], Line[{{0, 0, 1}, {1, 0, 1}}], 
        Line[{{0, 0, 1}, {1, 1, 0}}], Line[{{0, 1, 0}, {0, 1, 1}}], 
        Line[{{0, 1, 0}, {1, 0, 1}}], Line[{{0, 1, 0}, {1, 1, 0}}], 
        Line[{{0, 1, 1}, {1, 0, 0}}], Line[{{0, 1, 1}, {1, 1, 1}}], 
        Line[{{1, 0, 0}, {1, 0, 1}}], Line[{{1, 0, 0}, {1, 1, 0}}], 
        Line[{{1, 0, 1}, {1, 1, 1}}], Line[{{1, 1, 0}, {1, 1, 1}}]};

unitCell[fcc] = {AbsoluteThickness[2], GrayLevel[0.7], 
        Line[{{0, 0, 0}, {0, 0, 1}}], Line[{{0, 0, 0}, {0, 1, 0}}], 
        Line[{{0, 0, 0}, {0, 1, 1}}], Line[{{0, 0, 0}, {1, 0, 0}}], 
        Line[{{0, 0, 0}, {1, 0, 1}}], Line[{{0, 0, 0}, {1, 1, 0}}], 
        Line[{{0, 0, 1}, {0, 1, 0}}], Line[{{0, 0, 1}, {0, 1, 1}}], 
        Line[{{0, 0, 1}, {1, 0, 0}}], Line[{{0, 0, 1}, {1, 0, 1}}], 
        Line[{{0, 0, 1}, {1, 1, 1}}], Line[{{0, 1, 0}, {0, 1, 1}}], 
        Line[{{0, 1, 0}, {1, 0, 0}}], Line[{{0, 1, 0}, {1, 1, 0}}], 
        Line[{{0, 1, 0}, {1, 1, 1}}], Line[{{0, 1, 1}, {1, 0, 1}}], 
        Line[{{0, 1, 1}, {1, 1, 0}}], Line[{{0, 1, 1}, {1, 1, 1}}], 
        Line[{{1, 0, 0}, {1, 0, 1}}], Line[{{1, 0, 0}, {1, 1, 0}}], 
        Line[{{1, 0, 0}, {1, 1, 1}}], Line[{{1, 0, 1}, {1, 1, 0}}], 
        Line[{{1, 0, 1}, {1, 1, 1}}], Line[{{1, 1, 0}, {1, 1, 1}}]};

Show[Graphics3D[unitCell[bcc]], Boxed -> False, 
      ViewPoint -> {1.3, -2.4, 1}]

Needs["Graphics`PlotField3D`"]

ListPlotVectorField3D[{{{0, 0, 0}, {1, 1, 1}}}, VectorHeads  ->  True]

\(zero = {0, 0, 0}; 
a = {1, 1, \(-1\)}/2; 
b = {\(-1\), 1, 1}/2; 

    c = {1, \(-1\), 1}/2; \)

Show[Graphics3D[unitCell[bcc]], 
      ListPlotVectorField3D[{{zero, a + b}}, VectorHeads  ->  True] , 
      Boxed -> False, ViewPoint -> {1.3, -2.4, 1}]

\(bccvector[vector1_, vector2_, vector3_] := 
	
      Show[
		{Graphics3D[unitCell[bcc]], 
							
          ListPlotVectorField3D[{{zero, vector1}, {vector1, vector2}, {
                vector1 + vector2, vector3}}, 

            			\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ VectorHeads\  -> \ True, 
            Boxed -> False, 
							\ \ \ \ \ 
            ColorFunction -> \((RGBColor[0, 0, 1]&)\), 
            DisplayFunction -> Identity]}, Boxed -> False, 
        ViewPoint -> {1.3, \(-2.4\), 1}, 
\ \ 
        DisplayFunction -> $DisplayFunction]\)

bccvector[a, b, 0 c]

lattice[bcc] = {AbsolutePointSize[10], RGBColor[1, 0, 0], 
        Point[zero], Point[a + b]};

\(bccvector[vector_] := 
	
      Show[
		{Graphics3D[{unitCell[bcc], lattice[bcc]}], 
							
          ListPlotVectorField3D[{{zero, vector}}, 

            			\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ VectorHeads\  -> \ True, 
            Boxed -> False, 
							\ \ \ \ \ \ 
            DisplayFunction -> Identity]}, Boxed -> False, 
        ViewPoint -> {1.3, \(-2.4\), 1}, 
\ \ 
        DisplayFunction -> $DisplayFunction]\)

\(zero = {0, 0, 0}; 
a2 = {1, 1, 0}/2; 
b2 = {0, 1, 1}/2; 

    c2 = {1, 0, 1}/2; \)

\(atomColor[Ga] = RGBColor[0.8, 0, 0]; 

    atomColor[As] = RGBColor[0, 0.8, 0]; 
radius[Ga] = 0.075; 

    radius[As] = 0.1; \)

Needs["Graphics`Shapes`"]

atomPoint[{atom_, coords_}] := {atomColor[atom], 
        PointSize[radius[atom]], Point[coords]}

atomSphere[{atom_, coords_}] := {EdgeForm[], 
        SurfaceColor[atomColor[atom]], 
        TranslateShape[Sphere[radius[atom], 10, 10], coords]}

bondLine[{coords1_, coords2_}] := {Thickness[0.025], 
        RGBColor[0.8, 0.8, 0], Line[{coords1, coords2}]}

TranslateBasis[
        coords_] := {{Ga, {0, 0, 0} + coords}, {
          As, {1/4, 1/4, 1/4} + coords}};

TranslateBasis[{(1/2), (1/2), 0}]

Map[TranslateBasis, {{0, 0, 0}, {(1/2), (1/2), 0}}]

unitCellCoords[fcc] = {zero, a2 + b2 + c2,  ...  .. };

unitCellBases = Map[TranslateBasis, unitCellCoords[fcc]]

unitCellAtoms = Flatten[unitCellBases, 1]

im1 = Map[atomPoint, unitCellAtoms]

Show[Graphics3D[{unitCell[fcc], im1}], Boxed -> False, 
      ViewPoint -> {1.3, -2.4, 1}]

inside[{atom_, {x_, y_, z_}}] := 
      TrueQ[(0 ≤ x ≤ 1) && 
          (0 ≤ y ≤ 1) && 
          (0 ≤ z ≤ 1)]

unitCellAtoms = Select[unitCellAtoms, inside]

im2 = Map[atomPoint, unitCellAtoms]

Show[Graphics3D[{unitCell[fcc], im2}], Boxed -> False, 
      ViewPoint -> {1.3, -2.4, 1}]

bond1 = {{(3/4), (3/4), (1/4)}, {1, 1, 0}}

bondCoords = {bond1}

Bonds = Map[bondLine, bondCoords]

Show[Graphics3D[{im2, Bonds, unitCell[fcc]}], Boxed -> False, 
      ViewPoint -> {1.3, -2.4, 1}]