displayTriangles  := (For[
          i = 1; polys = {}, i <= Length[faceList], i++, 
          polys = Append[polys, facePoly[i]]]; 
Show[
          Graphics3D[polys], 
          Axes -> Automatic])
updateForces  :=  
      For[i = 1, i <= Length[springList], i++, 
        pointList  =  
          ReplacePart[ pointList, 
            ReplacePart[
              pointList[[springList[[i]][[1]]]],  pointList[[springList[[i]][[1]]]][[3]] + 
                springForce[i], 3], springList[[i]][[1]]]; 
        pointList  =  
          ReplacePart[ pointList, 
            ReplacePart[
              pointList[[springList[[i]][[2]]]],  pointList[[springList[[i]][[2]]]][[3]] + 
                springForce[i], 
              3], springList[[i]][[2]]]]
updateVelocities  :=  (For[i = 1; tl = {}, 
          i <= Length[pointList], i++, 
          tl = Append[tl, 
              ReplacePart[
                pointList[[i]], pointList[[i]][[2]] + 
                  dt*pointList[[i]][[3]]/pointList[[i]][[4]], 2]]]; pointList = tl)
updatePositions  :=  (For[i = 1; tl = {}, 
          i <= Length[pointList], i++, 
          tl = Append[tl, 
              ReplacePart[
                pointList[[i]], pointList[[i]][[1]] + 
                  dt*pointList[[i]][[2]]/pointList[[i]][[4]], 1]]]; pointList = tl)
update  :=  (updateForces; updateVelocities; 
          updatePositions;);
  
dt  =  1;

step := (update; printSpringLengths; displayTriangles)