color = i_to_rgb(angle / anglemax)
    colors[idx] = color

vectors = {}
for fkey, angle in angles.items():
    y = 1.0 / math.tan(math.radians(angle))
    x_vec = [1.0, 0.0, 0.0]
    y_vec = [0.0, y, 0.0]
    vec = normalize_vector(add_vectors(x_vec, y_vec))
    vectors[fkey] = vec

# ==========================================================================
# Create Face Adjacency Network - keys from 0 to N!
# ==========================================================================

n = mesh.number_of_faces()

# A = np.zeros((n, n))
# print('Shape of Adjacency Matrix', A.shape)

# for fkey in mesh.faces():
# 	nbrs = mesh.face_neighbors(fkey)

# 	for nbr in nbrs:
# 		# A[fkey, nbr] = 1.0
# 		angle_diff = math.fabs(angles[fkey] - angles[nbr])
# 		A[fkey, nbr] = angle_diff

# # all options
# A_all = np.zeros((n, n))
            fkeys = cluster.faces_keys

            for fkey in fkeys:
                vector = str_mesh.cMesh.get_face_attribute(fkey, vector_tag)
                vector = normalize_vector(vector)
                ali_vec = ut.align_vector(vector, proxy)
                difference = cg.subtract_vectors(ali_vec, proxy)
                _error = cg.length_vector_sqrd(difference)  # original

                # for face in faces:
                #     error += face.get_error()

                error += _error

        print('error', error)
        error /= mesh.number_of_faces()
        print('error', error)
        errors.append(error)

    with open('errors.txt', 'w') as f:
        for e in errors:
            f.write(str(e))
            f.write('\n')

    import matplotlib.pyplot as plt

    plt.plot(errors)
    plt.show()
    # ==========================================================================
    # Visualization
    # ==========================================================================