[C] ecrire texte sur graph + dimensionnement

Fermé
loenix Messages postés 2 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 3 février 2006 - 3 févr. 2006 à 12:24
loenix Messages postés 2 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 3 février 2006 - 3 févr. 2006 à 12:47
merci d'avance
A voir également:

1 réponse

loenix Messages postés 2 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 3 février 2006
3 févr. 2006 à 12:47
desolé il y a eu comme a petit probleme....

mais bon

bonjour a tous

voila mon probleme:

je dois realiser un programme en C qui consiste a tracer un diagramme de bode du 2 ordre
mais voila j'arrive pa a ecrire du texte sur la courbe
et pour different coeff d'amortissement que je donne la courbe dépasse de l'ecran pour revenir a gauche pour continué le tracé.
si ca peur vous aider voila le code
#include <stdio.h>
#include <vga.h>
#include <math.h>
#define w 50000



	char choix;
	int i,x,y,k,l;
	float modH[w+1],argH[w+1],courbe[w+1],m;
	float W1[w+1],xmin=0.01,xmax=10,ymin,ymax;


void presentation(void){
	system("clear");

	printf("\n                    ///////////////////////////////////////");
	printf("\n                    /          Diagramme de BODE          /");
	printf("\n                    /         Circuit du 2e Ordre         /");
	printf("\n                    /            Realiser par:            /");
	printf("\n                    /                                                   /");
	printf("\n                    /                        loenix                   /");
	printf("\n                    /              Groupe RLIA            /");
	printf("\n                    ///////////////////////////////////////\n\n\n\n\n\n");
}




void trace_graduation(void){
	int x0,y0;
	x0=vga_getxdim();
	y0=vga_getydim();
	vga_drawline(0,0,x0,0);
	vga_drawline(0,0,0,y0);
	for(l=1;l<5;l++){
		vga_drawline(l*200,10,l*200,0);
			for(k=2;k<10;k++){
			vga_drawline((log10(k)+(l-1))*200,5,(log10(k)+(l-1))*200,0);
					}
			}

		for(l=0;l<600;l+=50)  vga_drawline(0,l,5,l);
}


void calcul_gain(void){
	for(i=0;i<=w;i++){
		W1[i]=(xmin+i*(xmax-xmin)/w);    //equation déterminant le nb de point entre les intervalle de la courbe
		modH[i]=-20*(log10 (sqrt(pow((2*m*W1[i]),2)+pow(pow(W1[i],2)+1,2))));    //equation du module
	}
}

void calcul_phase(void){
	for(i=0;i<=w;i++){
		W1[i]=(xmin+i*(xmax-xmin)/w);    //equation déterminant le nb de point entre les intervalle de la courbe
		argH[i]= - atan (2*m*W1[i]+pow(W1[i],2));   //equation de la phase
	}
}



void minmax(void){
	if(choix=='m'){
		for(i=0;i<w;i++) courbe[i]=modH[i];
	}
	if(choix=='p'){
		for(i=0;i<w;i++) courbe[i]=argH[i];
	}
			ymin=courbe[0];
			ymax=courbe[0];
			for(i=1;i<=w;i++){
				if(courbe[i]<ymin)	ymin=courbe[i];

				if(courbe[i]>ymax)	ymax=courbe[i];

			}
}

void trace_graph (void){
	for(i=0;i<w;i++){
		x=318*log10((W1[i]-xmin)/(xmax-xmin));
		y=479-479*(courbe[i]-ymin)/(ymax-ymin);
		vga_drawline(x,y,318*log10((W1[i+1]-xmin)/(xmax-xmin)),479-479*(courbe[i+1]-ymin)/(ymax-ymin));
	}
}



int main(void){
while(1){

 	presentation();
	printf("---------------------Saisir la valeur de l'amortissement M---------------------\n");

	scanf("%f",&m);

	calcul_gain();	
	vga_init();
	vga_setmode(11);
	vga_setcolor(3);

	trace_graduation();
	choix='m';
	minmax();	
	trace_graph();
	choix=vga_getch();
	if (choix =='p'){
		calcul_phase();	
		vga_init();
		vga_setmode(11);	
		vga_setcolor(4);
		trace_graduation();
		minmax();
		trace_graph();
	}
	vga_getch();
	vga_setmode(TEXT);

}}

je le compile avec:
ccg tut.c

pour ce qui est du texte j'ai essaié un ca (trace_graph modifié):

...............
#include<vgagl.h>
........................
void trace_graph (void){


	if(choix!='p'){
	 gl_setcontextvga(11);
	 gl_setfont(8, 8, gl_font8x8); //largeur, hauteur, pointeur sur la police (c'est la seule 						en standard)
	 gl_setwritemode(FONT_COMPRESSED);
	 gl_setfontcolors(4,5);
	 gl_printf(50,500,"Tapez P pour la phase");
}



	for(i=0;i<w;i++){
		x=318*log10((W1[i]-xmin)/(xmax-xmin));
		y=479-479*(courbe[i]-ymin)/(ymax-ymin);
		vga_drawline(x,y,318*log10((W1[i+1]-xmin)/(xmax-xmin)),479-479*(courbe[i+1]-ymin)/(ymax-ymin));
	}
}

et je compileavec
gcc -o3 -o tut tut.c -lvgagl -lvga -lm

mais lors de l'execution du graph ca me met :
cannot get I/O permissions
ca vien d ou le prob
si quelquen a une autre .....
PS : j'execute le prog sous linux en mode texte avec (./tut)
voila et merci d'avance
0