Desin avec turbo c

Résolu
sajid_morad Messages postés 31 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 26 mars 2009 - 8 déc. 2004 à 12:30
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 9 déc. 2004 à 09:11
salut tout le monde ,je suis débutant , je programme avec turbo c , je dois dessiner un cercle à partir de 3 points, j aimerai savoir comment faire , c à dire :
1- quels sont les librairie que je dois utiluser?
2- ou je peux les télécharger ?
3- quel est le meilleur algorithme que je peux utiliser ?

sachant que ça sera un programme sous dos
merci

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 déc. 2004 à 09:11
Aucune idée si ça marche sur turbo C, mais il n'y a pas de raison que non (même avec émulation du FPU).
Pour le tracé, aucune idée. Si tu sait tracer un pixel, tu fait une boucle avec un angle allant de 0 à 360° et tu trace les points
x = x0+R*cos(angle);
y = y0+R*sin(angle);
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 déc. 2004 à 14:22
code pour déterminer le cente et le rayon d'un cercle à partir de 3 points non alignés :

#include <stdio.h>
#include <math.h>

//*******************************************************************
// équation d'un cercle de centre (x0,y0) et de rayon R :
// (x-x0)² + (y-y0)² = R²
// 
// avec 3 point A, B et C non alignés, on peut trouver le
// cercle passant par ces 3 points:
//
// les 3 équations de base (développées) :
// (1) xA² + x0² - 2*xA*x0 + yA² + y0² - 2*yA*y0 = R²
// (2) xB² + x0² - 2*xB*x0 + yB² + y0² - 2*yB*y0 = R²
// (3) xC² + x0² - 2*xC*x0 + yC² + y0² - 2*yC*y0 = R²
//// on réalise (2)' (2)-(1) et (3)' (3)-(1)
// après simplification et réarrangement :
// (2)' 2*x0*(xA-xB) + 2*y0*(yA-yB) = xA² - xB² + yA² - yB²
// (3)' 2*x0*(xA-xC) + 2*y0*(yA-yC) = xA² - xC² + yA² - yC²
//
// (2)' A*x0 + B*y0 = C
// (3)' D*x0 + E*y0 = F
//
//
// système de 2 équations à 2 inconnues, calcul du déterminant
// (si nul, le système n'a pas de solution unique et on n'a pas
// affaire à un cercle) :
// det = A*E - B*D
//
// les solutions sont :
// x0 = (EC-BF)/det
// y0 = (AF-DC)/det
//
// le rayon s'obtient ensuite :
// R = sqrt( (xA-x0)² + (yA-y0)² )
//*******************************************************************

int main(int argc, char* argv[])
{
// les 3 points initiaux (cercle de centre (2,3) et de rayon 4,
// correspondant à des angles de 60°, 150° et 225°)double xA 4.0000, yA 6.4641;double xB -1.4641, yB 5.0000;double xC -0.8284, yC 0.1716;

// calcul de A, B, C, D, E, F et det
double A = 2*(xA-xB);
double B = 2*(yA-yB);
double C = xA*xA - xB*xB + yA*yA - yB*yB;
double D = 2*(xA-xC);
double E = 2*(yA-yC);
double F = xA*xA - xC*xC + yA*yA - yC*yC;
double det = A*E - B*D;printf("A %lf, B %lf, C = %lf\r\n", A, B, C);printf("D %lf, E %lf, F = %lf\r\n", D, E, F);
printf("det = %lf\r\n", det);
if(det == 0)
{
printf("det = 0, ce n'est pas un cercle\r\n");
return 0;
}

// calcul de x0 et y0
double x0 = (E*C-B*F)/det;
double y0 = (A*F-D*C)/det;
printf("x0 = %lf\r\n", x0);
printf("y0 = %lf\r\n", y0);

// calcul de R
double R = sqrt( (xA-x0)*(xA-x0) + (yA-y0)*(yA-y0) );
printf("R = %lf\r\n", R);
return 0;
}



Pour ce qui est de tracer le cercle, je ne sais pas, mais la plupart des fonctions de dessins de cercles se basent sur le centre et le rayon.
0
sajid_morad Messages postés 31 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 26 mars 2009
8 déc. 2004 à 21:40
salut, esque ça marche sur Turbo c, et comment faire pour le dessin
Merci
0
Rejoignez-nous