Graphes/TP/fonctionsAide.c
2023-02-10 11:59:54 +01:00

86 lines
1.9 KiB
C

#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;
}
}