void PermutePlane()
 {
     points.CopyTo(planeState, 0);
     for (int i = 0; i < 3; i++)
     {
         for (int j = 0; j < 7; j++)
         {
             planeState[i] = SFPFunctionsHelper.VectorMatrixProduct(planeState[j], firstMatrices[i]);
         }
     }
 }
    IEnumerator ShuffleCube(int index)
    {
        Vector3[] newVertices = new Vector3[24];
        cube.mesh.vertices.CopyTo(newVertices, 0);
        int count = 0;

        while (count < 10)
        {
            for (int i = 0; i < 24; i++)
            {
                newVertices[i] = Vector3.Lerp(newVertices[i], SFPFunctionsHelper.VectorMatrixProduct(newVertices[i], sfp.productMatrices[index]), 0.1f);
            }
            cube.mesh.vertices = newVertices;
            yield return(new WaitForSeconds(0.1f));
        }
    }