Mon code réalise le traçage d'un cercle à partir de trois point donner par l'utilisateur.
Source / Exemple :
/*******************/
/* Nom : OUMALEK */
/* Pr?nom: Mohamed */
/* Niveau:3GI */
/*******************/
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<string.h>
#include<math.h>
#define N 400
#define Pi 3.14
//Fonction qui calcule l'?quation d'une droite
void CalculEquationDroite(float x1,float y1,float x2,float y2,float *a,float *b){
- a=(x2-x1)/(y2-y1);
- b=-((x2+x1)*(x2-x1)/2+(y2+y1)*(y2-y1)/2)/(y2-y1);
}
//FONCTION QUI CALCUL le centre du cercle
void CalculCentre(float a1,float b1,float a2,float b2,float *xc,float *yc){
- xc=abs((b2-b1)/(a1-a2));
- yc=abs(a1*(*xc)+b1);
}
//La fonction qui dessine le cercle
void DessinCercle(float oa,float Ox,float Oy){
float a;
float x1,y1,x2,y2;
x1=oa;
y1=0;
a=2*Pi/N;
int i;
for(i=0;i<N;i++){
x2=oa*cos(a*i);
y2=oa*sin(a*i);
line(x1+Ox,y1+Oy,x2+Ox,y2+Oy);
x1=x2;
y1=y2;
}
}
//Le programme principale
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char msg[80];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
float a2,b2;//a2 et b2 sont definies tel que : y2=a2*x2+b2 l'equation de la droite
float a1,b1;//a2 et b2 sont definies tel que : y1=a1*x1+b1 l'equation de la droite
float xa,xb,xc,ya,yb,yc; //Les coordon?e des trois points a,b,c
int i,j;
printf("donner la valeur de xa :");
scanf("%f",&xa);
printf("donner la valeur de ya :");
scanf("%f",&ya);
printf("donner la valeur de xb :");
scanf("%f",&xb);
printf("donner la valeur de yb :");
scanf("%f",&yb);
printf("donner la valeur de xc :" );
scanf("%f",&xc);
printf("donner la valeur de yc :");
scanf("%f",&yc);
cleardevice();
moveto(xa,ya);
sprintf(msg, " a(%d, %d)", getx(), gety());
outtextxy(xa, ya, msg);
lineto(xb,yb);
moveto(xb,yb);
sprintf(msg, " b(%d, %d)", getx(), gety());
outtextxy(xb, yb, msg);
lineto(xc,yc);
moveto(xc,yc);
sprintf(msg, " c(%d, %d)", getx(), gety());
outtextxy(xc, yc, msg);
lineto(xa,ya);
CalculEquationDroite(xa,ya,xb,yb,&a1,&b1);
CalculEquationDroite(xc,yc,xb,yb,&a2,&b2);
float Ox,Oy;//les coordon?e du centre
CalculCentre(a1,b1,a2,b2,&Ox,&Oy);
outtextxy(Ox,Oy,"*");
outtextxy(Ox+4,Oy+4,"O");
float oa;//Le rayon du cercle
oa=sqrt((Ox-xa)*(Ox-xa)+(Oy-ya)*(Oy-ya));//Calcul du rayon
DessinCercle(oa,Ox,Oy);//appel de la fonction qui dessine le cercle
textcolor(10);
sprintf(msg, " (%s est :%f , %s est :%f)", "l'abscisse du centre ",Ox,"l'ordon?e du centre",Oy);
outtextxy(9,460, msg);
/* clean up */
getch();
cleardevice();
outtextxy(150,230,"Programme fait par OUMALEK Mohamed");
getch();
closegraph();
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.