import numpy as np
import matplotlib.pyplot as plt

np.random.seed(50)
#initialise le générateur de nombres aléatoires pour que les séquences 
#de nombres aléatoires générés soient les mêmes à chaque exécution du programme

k=3 #on pourra (par la suite) prendre k=4 ou 5 ou 6

def init_data(nb_points, R, x_centre, y_centre):
    pi=np.pi
    data=np.zeros((nb_points,2))
    for i in range(nb_points):
        r=R*np.random.uniform(0,1)
        theta=np.random.uniform(0,1)*2*pi
        x=x_centre+np.cos(theta)*r
        y=y_centre+np.sin(theta)*r
        data[i,0]=np.round(x,3)
        data[i,1]=np.round(y,3)
    return data


data1=init_data(20, 10, 12, 30)
data2=init_data(20, 10, 20, 10)
data3=init_data(20, 10, 50, 50)

data=np.concatenate((data1,data2,data3))



# QUESTION 1
    
def initialise_centres(k:int,data:np.array):
    """

    Parameters
    ----------
    k : int
        DESCRIPTION.
    data : np.array
        DESCRIPTION.

    Returns
    -------
    None.

    """


# QUESTION 2

n=len(data) 
couleur='bgrmyk'
centres=initialise_centres(k,data)
plt.axis('equal')


    
# QUESTION 3
    
def distance(A, B):
    """
    

    Parameters
    ----------
    A : TYPE
        DESCRIPTION.
    B : TYPE
        DESCRIPTION.

    Returns
    -------
    None.

    """


# QUESTION 4

def assign_centres(data:np.array,centres:np.array):
    """
    

    Parameters
    ----------
    data : np.array
        DESCRIPTION.
    centres : np.array
        DESCRIPTION.

    Returns
    -------
    None.

    """


# QUESTION 5
            
def update_centres(k:int,data:np.array,liste_centre:[int]): 
    """
    

    Parameters
    ----------
    k : list
        DESCRIPTION.
    data : np.array
        DESCRIPTION.
    liste_centre : [int]
        DESCRIPTION.

    Returns
    -------
    None.

    """


# QUESTION 6

def kmeans(k:int,data:np.array):
    """
    

    Parameters
    ----------
    k : list
        DESCRIPTION.
    data : np.array
        DESCRIPTION.

    Returns
    -------
    None.

    """


# QUESTION 7

#  /!\  Mettre en commentaire les tracés de la question 2

# n=len(data) 
# couleur='bgrmyk'
# plt.axis('equal')

# liste_centre,centres,i=kmeans(k,data)
# print(i) 
                   
