#include<graph.h>
#include <math.h>


void visuelGraphe(graphe g){
	int taille=1000;
    int origine=taille/2;
    int distance=4*origine/5;
    int tailleVert=taille/20;
	    InitialiserGraphique();
    CreerFenetre(10,10,taille,taille);

    int i,j;
    int x,y;
    char* nV=malloc(2);
    *nV='0';
    *(nV+1)='\0';
    int* cX=calloc(g.ordre,sizeof(int));
    int* cY=calloc(g.ordre,sizeof(int));
    for(i=0;i<g.ordre;i++){
    	x=(int) origine+distance*cos(2*M_PI*i/g.ordre);
    	y=(int) origine+distance*sin(2*M_PI*i/g.ordre);
    	cX[i]=x+tailleVert/2;
    	cY[i]=y+tailleVert/2;
    	RemplirArc(x,y,tailleVert,tailleVert,0,360); 
    	EcrireTexte(x,y,nV,2);
    	(*nV)++;

    }


//Version si le graphe est une matrice d'adjacence
    for(i=0;i<g.ordre;i++){
    	    for(j=0;j<g.ordre;j++){
    	    	if(g.adj[i][j]!=0){
    	    		DessinerSegment(cX[i],cY[i],cX[j],cY[j]);
    	    	}
    	    }
    	}
//Version à utiliser si le graph est un tableau de listes chaînées
/*
 maillon* read;
    for(i=0;i<g.ordre;i++){
            read=g.voisins[i];
            while(read!=NULL){
    	       	DessinerSegment(cX[i],cY[i],cX[read->valeur],cY[read->valeur]);
                read=read->suivant;
                }
    	    	}
*/
    Touche();
    FermerGraphique();

}



//Aides matrices
//Creation matrice carrée vide :
int** creerMatriceId(int taille){
    int** res=calloc(taille,sizeof(int*));
    for(int i=0;i<taille;i++){
        res[i]=calloc(taille,sizeof(int));
        for(int j=0;j<taille;j++){
            res[i][j]=(i==j)?1:0;
        }
    }
    return res;
}

//Creation copie d'une matrice carree :
int** recopierMatrice(int **m,int taille){
   int** creerMatriceId(int taille){
    int** res=calloc(taille,sizeof(int*));
    for(int i=0;i<taille;i++){
        res[i]=calloc(taille,sizeof(int));
        for(int j=0;j<taille;j++){
            res[i][j]=m[i][j];
        }
    }
    return res;
} 
}


